RSA 简介
RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。
这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。
是由一对密钥来进行加解密的过程,分别称为公钥和私钥。
公钥加密,私钥解密
两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。
通常个人保存私钥,公钥是公开的(可能同时多人持有)
RSA加密、签名区别
加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了防止信息被泄露,而签名是为了防止信息被篡改
加解密
import rsa
import base64
rsa_pubkey, rsa_privkey = rsa.newkeys(2048) # 生成密钥对,返回(PublicKey(n,e), PrivateKey(n,e,d,p,q)),即(公钥对象,私钥对象)
# 加密
text = 'hello world'
crypto_text_e = base64.b64encode(rsa.encrypt(text.encode('utf-8'), rsa_pubkey))
print(crypto_text_e.decode('utf-8'))
# 解密
crypto_text_d = rsa.decrypt(base64.b64decode(crypto_text_e), rsa_privkey)
print(crypto_text_d.decode('utf-8'))
# base64.b64encode(),base64.b64decode() 返回类型都是bytes,打印时添加.decode()将bytes转为str.