Python 加密的实例详解
本篇文章将会通过两个示例,详细讲解 Python 加密的实现过程。其中,一个示例使用常见的对称加密算法 AES,另一个示例使用非对称加密算法 RSA。
对称加密示例(AES)
对称加密算法中,加密和解密都使用相同的密钥进行操作。其中,AES 是当前常见的对称加密算法之一。下面是使用 Python 实现 AES 加密的过程:
# 导入所需的库
from Crypto.Cipher import AES
import base64
# 初始化 AES 加密实例
key = b'key12345key12345' # 根据需要自定义,必须是 16、24 或 32 位长度
iv = b'iv12345iv12345' # 根据需要自定义,必须是 16 位长度
cipher = AES.new(key, AES.MODE_CBC, iv)
# 加密
text = 'Hello, Python!'
text = text.encode()
text_padded = text + b'\0' * (AES.block_size - len(text) % AES.block_size)
ciphertext = cipher.encrypt(text_padded)
encrypted = base64.b64encode(ciphertext).decode()
# 解密
ciphertext_dec = base64.b64decode(encrypted)
decipher = AES.new(key, AES.MODE_CBC, iv)
text_padded_dec = decipher.decrypt(ciphertext_dec)
text_dec = text_padded_dec.rstrip(b'\0').decode()
其中,关键的语句是通过使用 Crypto.Cipher
库中的 AES
类来实例化 cipher
和 decipher
对象,分别用于加密和解密操作。加密时首先需要将原始字符串转化成字节数组 bytes
,因为 AES
加密算法是对字节序列进行操作的。此外,为了保证数据能够被正确地加密,需要使用密钥、初始化向量以及填充操作。解密时需要先将加密后的密文 base64 解码,然后使用 decipher
对象对其进行解密操作,同时需要注意将解密后的字节序列转化为标准字符串。
非对称加密示例(RSA)
非对称加密算法中,加密和解密使用不同的密钥进行操作,公钥用于加密,私钥用于解密。RSA 是当前常见的非对称加密算法之一。下面是使用 Python 实现 RSA 加密的过程:
# 导入所需的库
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
# 生成密钥对
key = RSA.generate(2048) # 根据需要自定义密钥长度
private_key = key.export_key()
public_key = key.publickey().export_key()
# 初始化 RSA 加密实例
cipher = PKCS1_v1_5.new(RSA.import_key(public_key))
decipher = PKCS1_v1_5.new(RSA.import_key(private_key))
# 加密
text = 'Hello, Python!'
text = text.encode()
ciphertext = cipher.encrypt(text)
encrypted = base64.b64encode(ciphertext).decode()
# 解密
ciphertext_dec = base64.b64decode(encrypted)
text_dec = decipher.decrypt(ciphertext_dec, 'ERROR').decode()
其中,关键的语句是通过使用 Crypto.PublicKey
库中的 RSA
类来生成密钥对,并使用 Crypto.Cipher.PKCS1_v1_5
库中的 PKCS1_v1_5
类实例化 cipher
和 decipher
对象,分别用于加密和解密操作。加密时将明文转化为字节数组 bytes
,然后使用 cipher
对象进行加密操作。解密时需要先将加密后的密文 base64 解码,然后使用 decipher
对象对其进行解密操作,同时注意使用 decode()
方法将解密后的字节序列转化为标准字符串。
总结
本文详细讲解了 Python 中常见的对称加密算法 AES 和非对称加密算法 RSA 的实现过程,并提供了两个示例代码。AES 在传输小文件或进行数据加密时非常常用,而 RSA 在网络通讯等需要密钥交换的场景非常有用。这些算法的具体实现细节需要根据实际需求进行灵活调整。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 加密的实例详解 - Python技术站