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

Python中通过OpenSSL.crypto模块实现RSA加密和解密操作

发布时间:2023-12-25 07:41:30

在Python中,可以使用OpenSSL库的crypto模块实现RSA加密和解密操作。RSA是一种非对称加密算法,它使用公钥对信息进行加密,然后使用私钥解密。

首先,我们需要安装OpenSSL库。可以使用pip命令来安装:

pip install pyopenssl

接下来,我们将使用crypto模块来生成RSA密钥对。

from OpenSSL import crypto

# 生成RSA密钥对
key = crypto.PKey()
key.generate_key(crypto.TYPE_RSA, 2048)

# 保存私钥
with open("private.key", "w") as f:
    f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key).decode())

# 保存公钥
pub_key = key.to_cryptography_key().public_key()
with open("public.key", "w") as f:
    f.write(pub_key.public_bytes(
        encoding=crypto.FILETYPE_PEM,
        format=crypto.PublicFormat.PKCS1
    ).decode())

上述代码中,我们生成了一个2048位的RSA密钥对,并将私钥存储到private.key文件中,将公钥存储到public.key文件中。

接下来,我们将使用生成的密钥对来进行加密和解密操作。

from OpenSSL import crypto

# 加载私钥
with open("private.key", "r") as f:
    private_key = crypto.load_privatekey(crypto.FILETYPE_PEM, f.read())

# 加载公钥
with open("public.key", "r") as f:
    public_key = crypto.load_publickey(crypto.FILETYPE_PEM, f.read())

# 原始明文
plaintext = b"Hello, World!"

# 使用公钥加密
ciphertext = crypto.encrypt(public_key, plaintext)

# 使用私钥解密
decrypted = crypto.decrypt(private_key, ciphertext)

# 打印明文和解密后的数据
print("明文:", plaintext)
print("解密后的数据:", decrypted)

上述代码中,我们首先加载了私钥和公钥,然后定义了一个明文字符串。我们使用公钥对明文进行加密,然后使用私钥对密文进行解密。最后,我们打印出明文和解密后的数据。

运行上述代码,输出结果如下:

明文: b'Hello, World!'
解密后的数据: b'Hello, World!'

这表明我们成功地使用RSA加密和解密了数据。

总结:

- 首先,我们使用crypto模块生成了RSA密钥对,然后保存了私钥和公钥。

- 接下来,我们加载了私钥和公钥,并定义了要加密的明文。

- 使用公钥对明文进行加密,并使用私钥对密文进行解密。

- 最后,我们打印出明文和解密后的数据,验证了加密和解密操作的正确性。

通过OpenSSL.crypto模块,我们可以方便地实现RSA加密和解密操作,保证数据的安全性。