Python混合加密算法代码
时间: 2024-05-13 20:12:44 浏览: 138
混合加密算法
4星 · 用户满意度95%
Python混合加密算法通常指的是使用对称加密和非对称加密结合的方式来加密数据。具体来说,可以使用RSA算法(非对称加密)来加密对称加密算法的密钥,然后再用这个密钥来加密真正的数据。
下面是Python中使用混合加密算法对数据进行加解密的示例代码:
```python
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 生成RSA公私钥对
key = RSA.generate(2048)
# 使用RSA公钥加密AES密钥
aes_key = get_random_bytes(16)
cipher_rsa = PKCS1_OAEP.new(key.publickey())
enc_aes_key = cipher_rsa.encrypt(aes_key)
# 使用AES密钥加密数据
data = b"Hello, world!"
cipher_aes = AES.new(aes_key, AES.MODE_EAX)
ciphertext, tag = cipher_aes.encrypt_and_digest(data)
# 将RSA公钥、加密后的AES密钥、加密后的数据和tag打包成一个字典
encrypted_data = {
'public_key': key.publickey().export_key(),
'enc_aes_key': enc_aes_key,
'ciphertext': ciphertext,
'tag': tag
}
# 对数据进行解密
key = RSA.import_key(open('private.pem').read())
cipher_rsa = PKCS1_OAEP.new(key)
aes_key = cipher_rsa.decrypt(encrypted_data['enc_aes_key'])
cipher_aes = AES.new(aes_key, AES.MODE_EAX)
data = cipher_aes.decrypt_and_verify(encrypted_data['ciphertext'], encrypted_data['tag'])
print(data.decode('utf-8'))
```
在这个示例代码中,我们首先生成了一个2048位的RSA公私钥对,然后使用get_random_bytes函数生成了一个16字节的随机数作为AES密钥。接着,我们使用RSA公钥加密了AES密钥,并用这个AES密钥来加密了数据。
在解密时,我们首先使用RSA私钥解密出AES密钥,然后使用这个AES密钥来解密数据。
阅读全文