https://www.cnblogs.com/kayb/p/8157556.html
https://www.jianshu.com/p/518fa5d59f89
**https://blog.csdn.net/ctwy291314/article/details/88822130
公钥加密、私钥解密
1 # -*- coding: utf-8 -*- 2 import rsa 3 4 # rsa加密 5 def rsaEncrypt(str): 6 # 生成公钥、私钥 7 (pubkey, privkey) = rsa.newkeys(512) 8 print("pub: ", pubkey) 9 print("priv: ", privkey) 10 # 明文编码格式 11 content = str.encode('utf-8') 12 # 公钥加密 13 crypto = rsa.encrypt(content, pubkey) 14 return (crypto, privkey) 15 16 17 # rsa解密 18 def rsaDecrypt(str, pk): 19 # 私钥解密 20 content = rsa.decrypt(str, pk) 21 con = content.decode('utf-8') 22 return con 23 24 25 (a, b) = rsaEncrypt("hello") 26 print('加密后密文:') 27 print(a) 28 content = rsaDecrypt(a, b) 29 print('解密后明文:') 30 print(content)
密钥导出、签名验证
1 # -*- coding: utf-8 -*- 2 import rsa 3 4 # 先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用 5 (pubkey, privkey) = rsa.newkeys(1024) 6 7 pub = pubkey.save_pkcs1() 8 pubfile = open('public.pem', 'wb') 9 pubfile.write(pub) 10 pubfile.close() 11 12 pri = privkey.save_pkcs1() 13 prifile = open('private.pem', 'wb') 14 prifile.write(pri) 15 prifile.close() 16 17 # load公钥和密钥 18 message = 'lovesoo.org' 19 with open('public.pem', "rb") as publickfile: 20 p = publickfile.read() 21 pubkey = rsa.PublicKey.load_pkcs1(p) 22 print(pubkey) 23 with open('private.pem', "rb") as privatefile: 24 p = privatefile.read() 25 privkey = rsa.PrivateKey.load_pkcs1(p) 26 print(privkey) 27 # 用公钥加密、再用私钥解密 28 crypto = rsa.encrypt(message.encode('utf-8'), pubkey) 29 message = rsa.decrypt(crypto, privkey) 30 message = message.decode('utf-8') 31 print (message) 32 33 # sign 用私钥签名认证、再用公钥验证签名 34 signature = rsa.sign(message.encode('utf-8'), privkey, 'SHA-1') 35 method_name = rsa.verify('lovesoo.org'.encode('utf-8'), signature, pubkey) 36 print(method_name)
对文件进行RSA加密解密
from rsa.bigfile import * import rsa with open('public.pem') as publickfile: p = publickfile.read() pubkey = rsa.PublicKey.load_pkcs1(p) with open('private.pem') as privatefile: p = privatefile.read() privkey = rsa.PrivateKey.load_pkcs1(p) with open('mysec.txt', 'rb') as infile, open('outputfile', 'wb') as outfile: #加密输出 encrypt_bigfile(infile, outfile, pubkey) with open('outputfile', 'rb') as infile2, open('result', 'wb') as outfile2: #解密输出 decrypt_bigfile(infile2, outfile2, privkey)
4.0的主要变化
版本3.4是3.x范围内的最后一个版本。版本4.0删除了以下模块,因为它们不安全:
rsa._version133
rsa._version200
rsa.bigfile
rsa.varblock
这些模块在3.4版中被标记为已弃用。
此外,在4.0中,I / O函数经过简化,可以在所有支持的Python版本上使用字节。
4.0版本不再支持Python 2.6和3.3。