简介
RSA是一种非对称加密算法,使用openssl ,keytools等工具生成一对公私钥对,使用被公钥加密的数据可以使用私钥来解密,反之亦然(被私钥加密的数据也可以被公钥解密)。
在实际使用中私钥一般保存在发布者手中,是私有的不对外公开的,只将公钥对外公布,就能实现只有私钥的持有者才能将数据解密的方法。 这种加密方式安全系数很高,因为它不用将解密的密钥进行传递,从而没有密钥在传递过程中被截获的风险,而破解密文几乎又是不可能的。
但是算法的效率低,所以常用于很重要数据的加密,常和对称配合使用,使用非对称加密的密钥去加密对称加密的密钥。
安装
pip install rsa
基本语法
#生成秘钥
key = rsa.PublicKey(rsa_n,rsa_e)
#加密
encode = rsa.encrypt(data.encode(),key)
RSA的公钥有两个值n和e,我们在网站中获得的公钥一般就是这样的两个值
实例
import rsa
import binascii
class RSAcoding(object):
def __init__(self,data):
self.data = data
n = '8d7e6949d411ce14d7d233d7160f5b2cc753930caba4d5ad24f923a505253b9c39b09a059732250e56c594d735077cfcb0c3508e9f544f101bdf7e97fe1b0d97f273468264b8b24caaa2a90cd9708a417c51cf8ba35444d37c514a0490441a773ccb121034f29748763c6c4f76eb0303559c57071fd89234d140c8bb965f9725'
e = '10001'
#需转换为16进制
self.rsa_n = int(n,16)
self.rsa_e = int(e,16)
self.key = rsa.PublicKey(self.rsa_n,self.rsa_e)
self.message=""
def encrypting(self):
encode = rsa.encrypt(self.data.encode(),self.key)
#查看编码
message = binascii.b2a_hex(encode)
self.message = message
return message
if __name__ == '__main__':
data = 'this is a key'
rsaa = RSAcoding(data)
mes = rsaa.encrypting()
print(mes)