Python怎么实现RSA加密解密(python,rsa,开发技术)

时间:2024-05-04 21:44:20 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、安装模块

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)

运行:

Python怎么实现RSA加密解密

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Python怎么实现RSA加密解密的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java数据类型如何定义与使用下一篇:

22 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18