欢迎访问宙启技术站
智能推送

Python实现解密和加密算法

发布时间:2023-12-04 19:19:15

在Python中,可以使用各种加密算法和库来实现加密和解密功能。下面将介绍两种常用的加密算法,即对称加密和非对称加密。同时,给出相应的使用示例。

对称加密算法用相同的密钥进行加密和解密。常见的对称加密算法包括AES(Advanced Encryption Standard)和DES(Data Encryption Standard)。下面是使用AES算法进行加密和解密的示例代码:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# 加密函数
def encrypt(key, data):
    # 生成随机的初始向量
    iv = get_random_bytes(AES.block_size)
    
    # 创建AES加密器,并使用初始向量和密钥进行加密
    encryptor = AES.new(key, AES.MODE_CBC, iv)
    ciphertext = encryptor.encrypt(data)
    
    # 返回加密后的密文和初始向量
    return ciphertext, iv

# 解密函数
def decrypt(key, ciphertext, iv):
    # 创建AES解密器,并使用初始向量和密钥进行解密
    decryptor = AES.new(key, AES.MODE_CBC, iv)
    data = decryptor.decrypt(ciphertext)
    
    # 移除填充的字节,得到解密后的明文
    plaintext = data.rstrip(b'\0')
    
    # 返回解密后的明文
    return plaintext

# 加密和解密示例
key = b'secret_key'
data = b'This is a secret message!'

ciphertext, iv = encrypt(key, data)
plaintext = decrypt(key, ciphertext, iv)

print('加密后的密文:', ciphertext)
print('解密后的明文:', plaintext)

非对称加密算法使用一对密钥,即公钥和私钥。常见的非对称加密算法包括RSA(Rivest-Shamir-Adleman)和ECC(Elliptic Curve Cryptography)。下面是使用RSA算法进行加密和解密的示例代码:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# 生成RSA密钥对
key = RSA.generate(2048)

# 获取公钥和私钥
public_key = key.publickey()
private_key = key

# 加密函数
def encrypt(public_key, data):
    # 创建RSA加密器,并使用公钥进行加密
    encryptor = PKCS1_OAEP.new(public_key)
    ciphertext = encryptor.encrypt(data)
    
    # 返回加密后的密文
    return ciphertext

# 解密函数
def decrypt(private_key, ciphertext):
    # 创建RSA解密器,并使用私钥进行解密
    decryptor = PKCS1_OAEP.new(private_key)
    data = decryptor.decrypt(ciphertext)
    
    # 返回解密后的明文
    return data

# 加密和解密示例
data = b'This is a secret message!'

ciphertext = encrypt(public_key, data)
plaintext = decrypt(private_key, ciphertext)

print('加密后的密文:', ciphertext)
print('解密后的明文:', plaintext)

这是使用Python实现解密和加密算法的两个例子。实际应用中,可以根据具体需求选择适合的加密算法和密钥长度,并遵循相应的安全实践来保护数据的安全性。