python RSA加密

发布时间:2023年12月18日
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.backends import default_backend
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()

# 获取模数和指数
modulus = public_key.public_numbers().e
exponent= public_key.public_numbers().n
print("模数 (Modulus):", modulus)
print("指数 (Exponent):", exponent)




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

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

# 原始数据
data = b"Hello, World!"

# 加密数据
cipher_suite = padding.OAEP(
    mgf=padding.MGF1(algorithm=hashes.SHA256()),
    algorithm=hashes.SHA256(),
    label=None
)
encrypted_data = public_key.encrypt(data, cipher_suite)

# 将加密后的数据转换为PEM格式并打印
encrypted_data_pem = public_key.public_bytes(encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo)
print("加密后的数据 (PEM 格式):")
print(encrypted_data_pem.decode('utf-8'))

# 解密数据
decrypted_data = private_key.decrypt(encrypted_data, cipher_suite)

# 打印解密后的数据
print("解密后的数据:", decrypted_data)

这段代码使用Python的cryptography库实现了RSA加解密。

首先,通过调用rsa.generate_private_key()函数生成了一个2048位的RSA私钥对象,并通过.public_key()方法获得对应的公钥对象。

然后,定义了原始数据data为"Hello, World!"。

接下来,使用padding.OAEP进行数据的加密。OAEP是一种填充方案,它使用了MGF1哈希函数和SHA256算法来保证安全性。

调用public_key.encrypt(data, cipher_suite)方法对原始数据进行加密,得到了加密后的数据encrypted_data

使用public_key.public_bytes()方法将加密后的数据转换为PEM格式,并打印出来。

然后,使用私钥对象调用private_key.decrypt(encrypted_data, cipher_suite)方法对加密后的数据进行解密,得到解密后的数据decrypted_data

最后,打印出解密后的数据。

文章来源:https://blog.csdn.net/weixin_32759777/article/details/134974206
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。