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

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加密和解密时需要记住私钥的保密性,以免被他人获取到私钥从而破解加密数据。