Python 实现常见的密钥加密算法:AES、RSA、ECC、DES、3DES、Rabin、ElGamal、Diffie-Hellman
本文将介绍 8 种常见的基于密钥的加密算法,并提供 Python 代码示例来演示它们的实现过程。这些算法包括但不限于:
- AES (Advanced Encryption Standard)
- RSA (Rivest-Shamir-Adleman)
- ECC (Elliptic Curve Cryptography)
- DES (Data Encryption Standard)
- 3DES (Triple Data Encryption Standard)
- Rabin
- ElGamal
- Diffie-Hellman
以下代码示例展示了这些算法的加密和解密过程,并省略了完整的错误处理和密钥生成部分。在实际使用中,需要更加细致地处理错误和密钥管理。
- AES (Advanced Encryption Standard)
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
def aes_encrypt(message, key):
cipher = AES.new(key, AES.MODE_EAX)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(message)
return nonce + ciphertext + tag
def aes_decrypt(ciphertext, key):
nonce = ciphertext[:16]
tag = ciphertext[-16:]
ciphertext = ciphertext[16:-16]
cipher = AES.new(key, AES.MODE_EAX, nonce)
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
return plaintext
- RSA (Rivest-Shamir-Adleman)
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
def rsa_encrypt(message, public_key):
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(message)
return ciphertext
def rsa_decrypt(ciphertext, private_key):
cipher = PKCS1_OAEP.new(private_key)
plaintext = cipher.decrypt(ciphertext)
return plaintext
- ECC (Elliptic Curve Cryptography)
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
def ecc_encrypt(message, public_key):
ciphertext = public_key.encrypt(message, ec.ECIES())
return ciphertext
def ecc_decrypt(ciphertext, private_key):
plaintext = private_key.decrypt(ciphertext)
return plaintext
- DES (Data Encryption Standard)
from Crypto.Cipher import DES
def des_encrypt(message, key):
cipher = DES.new(key, DES.MODE_ECB)
ciphertext = cipher.encrypt(message)
return ciphertext
def des_decrypt(ciphertext, key):
cipher = DES.new(key, DES.MODE_ECB)
plaintext = cipher.decrypt(ciphertext)
return plaintext
- 3DES (Triple Data Encryption Standard)
from Crypto.Cipher import DES3
def triple_des_encrypt(message, key):
cipher = DES3.new(key, DES3.MODE_ECB)
ciphertext = cipher.encrypt(message)
return ciphertext
def triple_des_decrypt(ciphertext, key):
cipher = DES3.new(key, DES3.MODE_ECB)
plaintext = cipher.decrypt(ciphertext)
return plaintext
- Rabin
from Crypto.PublicKey import Rabin
from Crypto.Cipher import PKCS1_v1_5
def rabin_encrypt(message, public_key):
cipher = PKCS1_v1_5.new(public_key)
ciphertext = cipher.encrypt(message)
return ciphertext
def rabin_decrypt(ciphertext, private_key):
cipher = PKCS1_v1_5.new(private_key)
plaintext = cipher.decrypt(ciphertext, None)
return plaintext
- ElGamal
from Crypto.PublicKey import ElGamal
from Crypto.Cipher import PKCS1_v1_5
def elgamal_encrypt(message, public_key):
cipher = PKCS1_v1_5.new(public_key)
ciphertext = cipher.encrypt(message)
return ciphertext
def elgamal_decrypt(ciphertext, private_key):
cipher = PKCS1_v1_5.new(private_key)
plaintext = cipher.decrypt(ciphertext, None)
return plaintext
- Diffie-Hellman
from cryptography.hazmat.primitives.asymmetric import dh
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
def diffie_hellman_key_exchange():
parameters = dh.generate_parameters(generator=2, key_size=2048, backend=default_backend())
private_key = parameters.generate_private_key()
public_key = private_key.public_key()
return private_key, public_key
请注意,以上代码示例仅为了给出算法加密实现过程的概述,并不包含完整的错误处理和密钥生成等部分。在实际使用中,应该更加细致地处理错误和密钥管理。
原文地址: http://www.cveoy.top/t/topic/bxoJ 著作权归作者所有。请勿转载和采集!