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

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_bytespublic_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算法的加密和解密过程是正确的。