1、前言
公鑰加密,私鑰解密。---用於加解密
私鑰簽名,公鑰驗簽。---用於簽名
比如加密情景:
如果甲想給乙發一個安全的保密的數據,那么應該甲乙各自有一個私鑰,
甲先用乙的公鑰加密這段數據(已之外人無法獲得,私鑰解密),再用自己的私鑰加密這段加密后的數據(甲之外無法篡改,私鑰簽名)
最后再發給乙,這樣確保了內容即不會被讀取,也不會被篡改
# publicKey = publicKey.save_pkcs1()
# privateKey =privateKey.save_pkcs1()
# publicKey = rsa.PublicKey.load_pkcs1(publicKey)
# privateKey = rsa.PrivateKey.load_pkcs1(privateKey)
# #除去換行和首尾
# privateKey=str(privateKey).replace('\\n','').replace("b'-----BEGIN RSA PRIVATE KEY-----",'').replace("-----END RSA PRIVATE KEY-----'",'').replace(' ','')
# 生成RSA公鑰和秘鑰 # 已 (publicKey1,privateKey1) = rsa.newkeys(1024) # 甲 (publicKey2,privateKey2) = rsa.newkeys(1024) def rsa_encrypt(content): # 公鑰加密 content = content.encode('utf-8') content = rsa.encrypt(content, publicKey1) return content def rsa_decrypt(content): # 私鑰解密 result = rsa.decrypt(content, privateKey1) result = result.decode('utf-8') return result def rsa_sign(content): # 私鑰簽名 content = content#.encode('utf-8') signature = rsa.sign(content, privateKey2, 'SHA-1') # 簽名 return signature def rsa_verify(content,signature): # 公鑰驗簽 content = content#.encode('utf-8') result = rsa.verify(content, signature, publicKey2) # 驗簽,失敗拋出異常 print(result) return result if __name__ == '__main__': message = '重要信息不可泄露' yi = rsa_encrypt(message) #加密 print(yi) jia = rsa_sign(yi) #簽名 print(jia) if rsa_verify(yi,jia): #驗簽 res = rsa_decrypt(yi) #解密 print('解密后:'+res)