Python中使用RSA加密与解密
发布时间:2023-12-27 15:51:18
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,能够实现数据的加密和解密操作,并且安全性较高。在Python中,可以使用cryptography模块来实现RSA加密与解密的操作。下面是使用RSA进行加密和解密的示例代码:
1. 导入依赖库
from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization, hashes
2. 生成密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
public_key = private_key.public_key()
3. 将密钥对保存到文件
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
with open('private_key.pem', 'wb') as f:
f.write(private_pem)
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open('public_key.pem', 'wb') as f:
f.write(public_pem)
4. 加密数据
message = b'This is a secret message'
ciphertext = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
5. 解密数据
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(plaintext)
以上代码中,首先导入了需要的库。然后,通过调用generate_private_key函数生成RSA密钥对。私钥用于解密数据,公钥用于加密数据。接下来,将密钥对保存到'private_key.pem'和'public_key.pem'文件中。
在加密数据时,首先将明文数据使用公钥进行加密,并使用OAEP填充方案进行填充。在解密数据时,将密文数据使用私钥进行解密,并使用相同的填充方案进行填充。最后,得到的明文与原始明文相同。
请注意,使用RSA加密和解密时需要记住私钥的保密性,以免被他人获取到私钥从而破解加密数据。
