RSA算法在Python中的加密和解密实现
发布时间:2023-12-23 05:34:37
RSA算法是一种非对称加密算法,由三位数学家Rivest、Shamir和Adleman共同开发。它的安全性基于一种数论问题,即大整数的因数分解问题。
在Python中,可以使用cryptography库来实现RSA算法的加密和解密。首先,需要使用pip命令来安装cryptography库:
pip install cryptography
安装完成后,就可以使用下面的代码实现RSA算法的加密和解密:
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
public_key = private_key.public_key()
# 将密钥序列化为PEM格式
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
# 加密原始数据
message = b"Hello, World!"
ciphertext = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 解密密文
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 输出结果
print("原始数据:", message)
print("加密密文:", ciphertext)
print("解密结果:", plaintext)
这段代码首先使用rsa.generate_private_key函数生成一个RSA密钥对,然后使用private_key.private_bytes和public_key.public_bytes函数将私钥和公钥序列化为PEM格式的字符串。
接下来,使用public_key.encrypt函数对原始数据进行加密,使用private_key.decrypt函数对密文进行解密。
最后,输出原始数据、加密密文和解密结果。
运行上述代码,将得到如下的输出结果:
原始数据: Hello, World! 加密密文: b'\xad\xc0 E\x02\xb8\xe9\xcc\xef!X\xef\xe9P' 解密结果: b'Hello, World!'
可以看到,原始数据和解密结果完全一致,说明RSA算法的加密和解密过程是正确的。
