RSA加密
生成公钥和私钥代码
from Crypto.PublicKey import RSA
rsa_obj = RSA.generate(1024)
# print(rsa_obj.exportKey().decode()) # 导出私钥
# print(rsa_obj.public_key().exportKey().decode()) # 导出公钥
# 生成秘钥
with open("rsa.public.pem", mode="wb") as f:
f.write(rsa_obj.publickey().exportKey())
with open("rsa.private.pem", mode="wb") as f:
f.write(rsa_obj.exportKey())
在生成公钥和私钥后,才可以进行rsa的加密和解密
使用公钥进行加密
1.获取公钥字符串
2.基于公钥字符串构建公钥对象
3.基于公钥对象生成rsa算法对象
总结步骤,withopen打开公钥,使用read获得密钥,通过RSA.importKey来构建公钥对象
使用RKCS1_v1_5.new去生成rsa的算法对象,使用encrypt对数据进行加密,最后使用base64对内容进行编码,转换成字符串,base64.b64encode
需要导入的包
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
核心代码
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
data = "alex is a stupid donkey!"
with open("rsa.public.pem") as f:
# 1. 获取公钥字符串
public_key_str = f.read()
# 2. 基于公钥字符串构建公钥对象
public_key_obj = RSA.importKey(public_key_str)
# 3. 基于公钥对象生成rsa算法对象
rsa = PKCS1_v1_5.new(public_key_obj)
# 数据加密
encrypt_data = rsa.encrypt(data.encode()) #注意这个地方数据传入
print("encrypt_data:::", encrypt_data)
# base64编码
base64_encrypt_data = base64.b64encode(encrypt_data).decode()
print(base64_encrypt_data)
RSA的解密
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
步骤:导入的包是一样的,首先是先对base64进行解码,然后显示生成私钥字符串,在基于私钥字符串构建私钥对象,最后基于私钥对象构建rsa对象
前面的基本上都是一样,重要的内容就是一个是encrypt,一个是decrypt
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
base64_encrypt_data = "B0bu11Wq6KKDiU8mdUF2i+cqzHcp/nlD64/P35GRGB2lm77sG1AD05DrArPWU38sxCmcKf/3TvM7C3CPfKHBXYoJwAbyIc/JT3Kmx7fHzpvYGi076aQFfHeumTclpRZoA/7milDFm+ClsQLSwLk2zOU2mskohT92CHNciU0A+xw="
# 一、base64解码
encrypt_data = base64.b64decode(base64_encrypt_data)
# print(encrypt_data)
# 二、数据解密
with open("rsa.private.pem") as f:
# (1) 生成私钥字符串
private_key_str = f.read()
# (2) 基于私钥字符串构建私钥对象
private_key_obj = RSA.importKey(private_key_str)
# (3) 基于私钥对象构建rsa对象
rsa = PKCS1_v1_5.new(private_key_obj)
# 数据解密
data = rsa.decrypt(encrypt_data, None)
print("data:::", data.decode())
836

被折叠的 条评论
为什么被折叠?



