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

如何使用Python实现RSA加密算法

发布时间:2024-01-07 04:23:46

RSA加密算法是一种非对称加密算法,可以用于加密和解密数据。Python中的cryptography库提供了实现RSA加密算法的功能。

首先,你需要安装cryptography库。可以使用以下命令在命令行中安装:

pip install cryptography

现在我们来实现RSA加密算法的功能。

## 生成RSA密钥对

首先,我们需要生成RSA密钥对。RSA密钥对由公钥和私钥组成。公钥用于加密数据,私钥用于解密数据。

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa

# 生成RSA密钥对
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
)

# 获取公钥
public_key = private_key.public_key()

# 将私钥和公钥保存到文件中
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
)

with open('private_key.pem', 'wb') as f:
    f.write(private_pem)
    
with open('public_key.pem', 'wb') as f:
    f.write(public_pem)

运行以上代码后,会生成私钥文件private_key.pem和公钥文件public_key.pem

## 使用RSA加密数据

接下来,我们来演示如何使用公钥对数据进行加密。

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives.asymmetric import padding as asymmetric_padding

# 加载公钥
with open('public_key.pem', 'rb') as f:
    public_pem = f.read()
    public_key = serialization.load_pem_public_key(public_pem, backend=default_backend())

# 要加密的数据
message = b'Hello, World!'

# 执行加密操作
ciphertext = public_key.encrypt(
    message,
    asymmetric_padding.OAEP(
        mgf=asymmetric_padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(ciphertext)

运行以上代码后,会输出加密后的数据。

## 使用RSA解密数据

接下来,我们来演示如何使用私钥对加密后的数据进行解密。

# 加载私钥
with open('private_key.pem', 'rb') as f:
    private_pem = f.read()
    private_key = serialization.load_pem_private_key(private_pem, password=None, backend=default_backend())

# 执行解密操作
plaintext = private_key.decrypt(
    ciphertext,
    asymmetric_padding.OAEP(
        mgf=asymmetric_padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(plaintext)

运行以上代码后,会输出解密后的数据。

以上就是使用Python实现RSA加密算法的基本步骤。你可以使用以上代码来加密和解密数据。