点击上方蓝字 ● 关注捷创源科技

非对称加密算法:
文件加密需要公开密钥(publickey)和私有密钥(privatekey)。
接收方在发送消息前需要事先生成公钥和私钥,然后将公钥发送给发送方。发送方收到公钥后,将待发送数据用公钥加密,发送给接收方。接收到收到数据后,用私钥解密。
在这个过程中,公钥负责加密,私钥负责解密,数据在传输过程中即使被截获,攻击者由于没有私钥,因此也无法破解。
非对称加密算法的加解密速度低于对称加密算法,但是安全性更高。
非对称加密算法:RSA、DSA、ECC等算法

RSA加密
公钥加密算法,一种非对称密码算法
公钥加密,私钥解密
3个参数:
rsa_n, rsa_e,message
rsa_n, rsa_e 用于生成公钥
message:需要加密的消息
安装 pip install rsa
实例测试:
# -*- coding: utf-8 -*-import rsafrom binascii import b2a_hex, a2b_hex# 全局变量-生成公钥和私钥publicKey, privateKey = rsa.newkeys(1024)class rsaCrypt:def __init__(self, publickey=None, privatekey=None):self.publicKey = publickey # 公钥self.privateKey = privatekey # 私钥self.cipherText = ""self.decryptText = ""# 保存密钥def saveKey(self):with open('public.pem', 'wb') as f:f.write(self.publicKey.save_pkcs1())with open('private.pem', 'wb') as f:f.write(self.privateKey.save_pkcs1())# 导入密钥def getKey(self):with open('public.pem', 'r') as f:self.publicKey = rsa.PublicKey.load_pkcs1(f.read().encode())with open('private.pem', 'r') as f:self.privateKey = rsa.PrivateKey.load_pkcs1(f.read().encode())# 加密def encrypt(self, strText):self.cipherText = rsa.encrypt(strText.encode('utf-8'), self.publicKey)# 因为rsa加密时候得到的字符串不一定是'utf-8'字符集的,输出到终端或者保存时候可能存在问题# 所以这里统一把加密后的字符串转化为16进制字符串# print(b2a_hex(self.cipherText))strTemp = b2a_hex(self.cipherText).decode('utf-8')return strTemp# 解密def decrypt(self, strText):self.decryptText = rsa.decrypt(a2b_hex(strText), self.privateKey)# print(self.decryptText)strTemp = self.decryptText.decode('utf-8')return strTemp"""---------------------------------------------主函数---------------------------------------------"""if __name__ == '__main__':# rap加密解密,保存秘钥到pem文件rsaObject1 = rsaCrypt(publicKey, privateKey)rsaObject1.saveKey()text = 'HelloWord'strEncyText = rsaObject1.encrypt(text)strDecyText = rsaObject1.decrypt(strEncyText)print(strEncyText)print(strDecyText)# 从pem文件获取秘钥,解密rsaObject2 = rsaCrypt()rsaObject2.getKey()strDecyText = rsaObject2.decrypt(strEncyText)print(strDecyText)"""55d431b9a68aa8d583a859dbe71d7a654243c39ed580cff03d81a6d76aee655bced121ece99abfd8638de92ab4a359554d206498d548798af9b2fc2c661e6bdc61f0e851238df0523e68da9041f902d8a2facd2cbfaa64ec21e70496351e3d2ad52b05c71d627deab97ac10f537302fccfcafa8a010a4dee0c3fac1cddeed0b5HelloWordHelloWord"""
关注上面微信公众号“捷创源科技”,每天获取技术干货,让我们一起成长!
文章转载自捷创源科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




