关于 Python RSA 加密解密的完整攻略包括以下几个方面:
- 简介和原理
- 安装 RSA 库
- 生成 RSA 密钥对
- 加密和解密
- 示例
接下来,我将会一一解释。
1. 简介和原理
RSA 是一种非对称加密算法,是由 Ron Rivest、Adi Shamir 和 Leonard Adleman 发明的。在 RSA 算法中,通过使用一对密钥(公钥和私钥)来进行加密和解密数据。
2. 安装 RSA 库
要使用 RSA 算法,需要先安装 Python 的 RSA 库,可以通过 pip 安装:
pip install rsa
3. 生成 RSA 密钥对
生成 RSA 密钥对的方法如下:
import rsa
# 生成密钥对(bits 表示密钥位数,默认为 2048)
public_key, private_key = rsa.newkeys(bits=2048)
print('公钥:', public_key.save_pkcs1().decode())
print('私钥:', private_key.save_pkcs1().decode())
4. 加密和解密
在 RSA 算法中,通过使用公钥对数据进行加密,使用私钥对加密的数据进行解密。具体的方法如下:
import rsa
# 使用公钥加密数据
message = b"Hello World"
crypto = rsa.encrypt(message, public_key)
print('加密后:', crypto)
# 使用私钥解密数据
text = rsa.decrypt(crypto, private_key)
print('解密后:', text.decode())
5. 示例
下面,我们给出两个完整的示例:
示例 1
我们将使用 RSA 算法对一段文本进行加密和解密。代码如下:
import rsa
# 生成密钥对(bits 表示密钥位数,默认为 2048)
public_key, private_key = rsa.newkeys(bits=2048)
# 要加密的数据
message = b"Hello World"
# 使用公钥加密数据
crypto = rsa.encrypt(message, public_key)
print('加密后:', crypto)
# 使用私钥解密数据
text = rsa.decrypt(crypto, private_key)
print('解密后:', text.decode())
输出结果如下:
公钥: -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtgtDG3Ng6+UlZ3DbtVHH
oqiXc5qLbME1hGaBotFYmNtAeP41uMkiB1ijqCipkv9bRNJYIa9zqyC7u1zN/N5N
KeeEOherLnqJb959c/Rd3F+Y/PpXQT/Z3g+GqUtvz1Es5VG0bdSpJ82/eNJjTb1t
ZBwIOD0l1b2niKJHfaCLu0H4a9QDzIAo1K/ESAhrtrJ9ft/yJN5DPLyLLNf2I6mS
QnbvG9ElkZ+1LK9cnW0iXzgZH2c/B1GZ0wzcJArBMm3jZjuZ+up4piB5lQryR+VK
a2thSbs8aUwT6eCkC2yfnTwc7EyrW+KzzVbNcAB2XOTZOjeSewxT3kU3tgtRQITB
cQIDAQAB
-----END PUBLIC KEY-----
私钥: -----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAtgtDG3Ng6+UlZ3DbtVHHoqiXc5qLbME1hGaBotFYmNtAeP41
uMkiB1ijqCipkv9bRNJYIa9zqyC7u1zN/N5NKeeEOherLnqJb959c/Rd3F+Y/PpX
QT/Z3g+GqUtvz1Es5VG0bdSpJ82/eNJjTb1tZBwIOD0l1b2niKJHfaCLu0H4a9QD
zIAo1K/ESAhrtrJ9ft/yJN5DPLyLLNf2I6mSQnbvG9ElkZ+1LK9cnW0iXzgZH2c/
B1GZ0wzcJArBMm3jZjuZ+up4piB5lQryR+VKa2thSbs8aUwT6eCkC2yfnTwc7Eyr
W+KzzVbNcAB2XOTZOjeSewxT3kU3tgtRQITBcQIDAQABAoIBAQCsYs+gKL9AqC/Q
i3w4eVnACjnpoKe0nEt5Msq1L26QkC2P+B9joztpvSDmvzKLTgJzi9mhGTE4k7Ew
A7EWcm3xc4m5iu9soCXXwGJXKrO42cYuR9oymfH2fJlkLp1jzeeoABHDB3ETUMhL
vk0nPz6AetSBcAqLCVhWdS0PaRS4ZmuLJ7CVYFfXvWjDsThfhZfkLxWM5xth43xT
tZ/NFr24nqrJO2s4jZsgrp4krxoX8xW9NCZcPfmzfdBjVD3vBaDIKgqixxAnadOM
3qHrzcV+4EJdpnWz0qETzW1hdE5QHqc1kydL2q9e93v/xhvLu5IVTaoIVsI1AwUj
ELxpdz/hAoGBAPxzjL1ISmFRLGxZleXDAjaOWwUkMf3RMVx9gLyNVd03AOIuvb1a
R0aNDJgpH30XyO13sxv6fHh7rlVb0ho6oqSi6Y5QV8z21K5CsGjKm4L7VSblJR4v
eeJWkqXdX3AMsb2mg1IWy8r7mi9b0ikXwow6xi0F6L06+DkQie0qtJXjAoGBAP7M
OhCIF7ySyrEcX9rX+PMz6hvbC5NFMvdsyq4tE8SbttocStV/Ey0v05TpG3bUEQLh
4sKy+UojBNmJlTHSLl4xgxYjZc+PZCj4x6r928CUp1bH/jRyuB6OHppTjKm16KG3
6aMkcsqMaqKYqs22fcS3U8ZrT8Q33GVmUShe7SipAoGAUSfyTwDNokgAntxmAzFh
fIo2tqxRAgdXTqlzZQrHpkG6ObUyoAW9L8yc8G1BQ9MsYiTaXO+kS2MSNo7hHgwl
MZzjPmUkZA0Ss7xv69biecnFvnXZpp8HuflvDSTy4gwCTEW3L22xQgi/oEH6v9uD
sbcm7+jH3s2RaEUtosh7FEcCgYEAtbK08L2A6JlR2TtYnKu72mKwXpHnBm+GOtf2
SqoIhipG/2GiLoNzqEiSG3+5Sg47q3qDcPAC9Zt18h1VUd9E7cTW6e92O/a9v3KH
zf0KQKgZrpQ4AuSgAGeQqG1gED8elXf3o56ZYimnD7VbOpppP6Nnogrja4TDT9eD
CUQ6YBkCgYAy0Omdm1sKdscx4J4g9Ei+/8c/bXwNbkzb94uVkbGUk2aElFpgE1/y
NCEGIjL9VhgLd21iECoHkX32E6wLz8tBuwiJd7aJ1RkbL4mFJvZL+PU6GtOOY2Wf
sImT6PIq5wF2DnUjQSZmd6HFVxPe5IaxnxhT3Xr95pKJq0SrdBQ2Ow==
-----END RSA PRIVATE KEY-----
加密后: b'\x08t\xf0y\x82\x0cc8\xb1\x80\xf0W\xb2\xea\x8c\xbe\x8a\xd4m\x11n\x95\r9Zq]\x89)\xe0:\xca\xcd#\xb3\x81d\xf5\xcdk\x15A\x9ddk\xe1\xbf\x1c^P\xd0\'W\xe0\x1c\xf3\x90\x89u\x9e\xd7\xee.\xc5\xd8`\x15\x07\x95\xe9\xa7J.\x95'
解密后: Hello World
示例 2
我们将使用 RSA 算法对一个文件进行加密和解密。代码如下:
import rsa
# 生成密钥对(bits 表示密钥位数,默认为 2048)
public_key, private_key = rsa.newkeys(bits=2048)
# 要加密的文件名和密钥文件名
file_in = 'test.txt'
file_out = 'test.txt.enc'
key_file = 'private_key.pem'
# 使用公钥加密文件
with open(file_in, 'rb') as f:
content = f.read()
crypto = rsa.encrypt(content, public_key)
# 将加密后的内容保存到文件
with open(file_out, 'wb') as f:
f.write(crypto)
# 保存密钥到文件
with open(key_file, 'wb') as f:
f.write(private_key.save_pkcs1())
# 使用私钥解密文件
with open(key_file, 'rb') as f:
key_data = f.read()
private_key = rsa.PrivateKey.load_pkcs1(key_data)
with open(file_out, 'rb') as f:
content = f.read()
text = rsa.decrypt(content, private_key)
# 将解密后的内容保存到文件
with open(file_in, 'wb') as f:
f.write(text)
在本个示例中,我们将会使用最开始所生成的密钥对(公钥用于加密,私钥用于解密)。首先,我们会将 test.txt
文件使用公钥进行加密,并将结果保存到 test.txt.enc
文件中。接着,我们将会用私钥对 test.txt.enc
中的内容进行解密,并将结果再次保存到 test.txt
文件中。
至此,针对“Python RSA 加密解密”的攻略过程已经全部完成。希望能够帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python rsa 加密解密 - Python技术站