点击上方蓝字 ● 关注捷创源科技
非对称加密算法:
文件加密需要公开密钥(publickey)和私有密钥(privatekey)。
接收方在发送消息前需要事先生成公钥和私钥,然后将公钥发送给发送方。发送方收到公钥后,将待发送数据用公钥加密,发送给接收方。接收到收到数据后,用私钥解密。
在这个过程中,公钥负责加密,私钥负责解密,数据在传输过程中即使被截获,攻击者由于没有私钥,因此也无法破解。
非对称加密算法的加解密速度低于对称加密算法,但是安全性更高。
非对称加密算法:RSA、DSA、ECC等算法
RSA加密
公钥加密算法,一种非对称密码算法
公钥加密,私钥解密
3个参数:
rsa_n, rsa_e,message
rsa_n, rsa_e 用于生成公钥
message:需要加密的消息
安装 pip install rsa
实例测试:
# -*- coding: utf-8 -*-
import rsa
from 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)
"""
55d431b9a68aa8d583a859dbe71d7a654243c39ed580cff03d81a6d76aee655bced121ece99abfd8638de92ab4a359554d206498d548798af9b2fc2c661e6bdc61f0e851238df0523e68da9041f902d8a2facd2cbfaa64ec21e70496351e3d2ad52b05c71d627deab97ac10f537302fccfcafa8a010a4dee0c3fac1cddeed0b5
HelloWord
HelloWord
"""
关注上面微信公众号“捷创源科技”,每天获取技术干货,让我们一起成长!
文章转载自捷创源科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。