Python怎么实现RSA加密解密
导读:本文共3138字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、安装模块pipinstallpycryptodome二、生成密钥对密钥对文件生成和读取代码:fromCrypto.PublicKeyimportRSAdefcreate_rsa_pair(is_save=False):'''创建rsa公钥私钥对:paramis_save:default:False:return:publi... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。一、安装模块
pipinstallpycryptodome
二、生成密钥对
密钥对文件生成和读取
代码:
fromCrypto.PublicKeyimportRSAdefcreate_rsa_pair(is_save=False):'''创建rsa公钥私钥对:paramis_save:default:False:return:public_key,private_key'''f=RSA.generate(2048)private_key=f.exportKey("PEM")#生成私钥public_key=f.publickey().exportKey()#生成公钥ifis_save:withopen("crypto_private_key.pem","wb")asf:f.write(private_key)withopen("crypto_public_key.pem","wb")asf:f.write(public_key)returnpublic_key,private_keydefread_public_key(file_path="crypto_public_key.pem")->bytes:withopen(file_path,"rb")asx:b=x.read()returnbdefread_private_key(file_path="crypto_private_key.pem")->bytes:withopen(file_path,"rb")asx:b=x.read()returnb
三、加密
流程:输入文本(str)→字符串编码(默认utf-8)(bytes)→rsa加密(bytes)→base64编码(bytes)→解码为字符串(str)
代码:
importbase64fromCrypto.CipherimportPKCS1_v1_5fromCrypto.PublicKeyimportRSAdefencryption(text:str,public_key:bytes): #字符串指定编码(转为bytes) text=text.encode('utf-8') #构建公钥对象 cipher_public=PKCS1_v1_5.new(RSA.importKey(public_key)) #加密(bytes) text_encrypted=cipher_public.encrypt(text) #base64编码,并转为字符串 text_encrypted_base64=base64.b64encode(text_encrypted).decode() returntext_encrypted_base64if__name__=='__main__': public_key=read_public_key() text='123456' text_encrypted_base64=encryption(text,public_key) print('密文:',text_encrypted_base64)
四、解密
说明:解密流程与加密流程相反(按照加密流程逆序解密)
流程:输入文本(str)→字符串编码(默认utf-8)(bytes)→base64解码(bytes)→rsa解密(bytes)→解码为字符串(str)
代码:
importbase64fromCrypto.CipherimportPKCS1_v1_5fromCryptoimportRandomfromCrypto.PublicKeyimportRSAdefdecryption(text_encrypted_base64:str,private_key:bytes): #字符串指定编码(转为bytes) text_encrypted_base64=text_encrypted_base64.encode('utf-8') #base64解码 text_encrypted=base64.b64decode(text_encrypted_base64) #构建私钥对象 cipher_private=PKCS1_v1_5.new(RSA.importKey(private_key)) #解密(bytes) text_decrypted=cipher_private.decrypt(text_encrypted,Random.new().read) #解码为字符串 text_decrypted=text_decrypted.decode() returntext_decryptedif__name__=='__main__': #生成密文 public_key=read_public_key() text='123456' text_encrypted_base64=encryption(text,public_key) print('密文:',text_encrypted_base64) #解密 private_key=read_private_key() text_decrypted=decryption(text_encrypted_base64,private_key) print('明文:',text_decrypted)
五、完整代码
importbase64fromCrypto.CipherimportPKCS1_v1_5fromCryptoimportRandomfromCrypto.PublicKeyimportRSA#------------------------生成密钥对------------------------defcreate_rsa_pair(is_save=False):'''创建rsa公钥私钥对:paramis_save:default:False:return:public_key,private_key'''f=RSA.generate(2048)private_key=f.exportKey("PEM")#生成私钥public_key=f.publickey().exportKey()#生成公钥ifis_save:withopen("crypto_private_key.pem","wb")asf:f.write(private_key)withopen("crypto_public_key.pem","wb")asf:f.write(public_key)returnpublic_key,private_keydefread_public_key(file_path="crypto_public_key.pem")->bytes:withopen(file_path,"rb")asx:b=x.read()returnbdefread_private_key(file_path="crypto_private_key.pem")->bytes:withopen(file_path,"rb")asx:b=x.read()returnb#------------------------加密------------------------defencryption(text:str,public_key:bytes):#字符串指定编码(转为bytes)text=text.encode('utf-8')#构建公钥对象cipher_public=PKCS1_v1_5.new(RSA.importKey(public_key))#加密(bytes)text_encrypted=cipher_public.encrypt(text)#base64编码,并转为字符串text_encrypted_base64=base64.b64encode(text_encrypted).decode()returntext_encrypted_base64#------------------------解密------------------------defdecryption(text_encrypted_base64:str,private_key:bytes):#字符串指定编码(转为bytes)text_encrypted_base64=text_encrypted_base64.encode('utf-8')#base64解码text_encrypted=base64.b64decode(text_encrypted_base64)#构建私钥对象cipher_private=PKCS1_v1_5.new(RSA.importKey(private_key))#解密(bytes)text_decrypted=cipher_private.decrypt(text_encrypted,Random.new().read)#解码为字符串text_decrypted=text_decrypted.decode()returntext_decryptedif__name__=='__main__':#生成密钥对#create_rsa_pair(is_save=True)#public_key=read_public_key()#private_key=read_private_key()public_key,private_key=create_rsa_pair(is_save=False)#加密text='123456'text_encrypted_base64=encryption(text,public_key)print('密文:',text_encrypted_base64)#解密text_decrypted=decryption(text_encrypted_base64,private_key)print('明文:',text_decrypted)
运行:
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Python怎么实现RSA加密解密的详细内容,希望对您有所帮助,信息来源于网络。