RSA 加密
RSA加密算法是一种非对称加密算法
。在公开密钥加密和电子商业中RSA被广泛使用。
该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。
3个参数:rsa_n
,rsa_e
,message
。rsa_n
, rsa_e
用于生成公钥,message
:需要加密的消息
因为RSA加密算法的特性,RSA的公钥私钥都是10进制的,但公钥的值常常保存为16进制的格式,所以需要将其用int()
方法转换为10进制格式。
安装
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import rsa from binascii import b2a_hex, a2b_hex
class RSA(object): def __init__(self, pub_key, pri_key): self.pub_key = pub_key self.pri_key = pri_key
def encrypt(self, text, encode="utf8"): cipher_text = rsa.encrypt(text.encode(), self.pub_key) print(cipher_text) return str(b2a_hex(cipher_text), encoding="utf8")
def decrypt(self, text): decrypt_text = rsa.decrypt(a2b_hex(text), self.pri_key) return decrypt_text.decode("utf8")
if __name__ == '__main__': pub_key, pri_key = rsa.newkeys(256) obj = RSA(pub_key, pri_key) text = '中国' text = '1111' encrypt_text = obj.encrypt(text) print(encrypt_text) print(obj.decrypt(encrypt_text))
|