python加密方法:rsa加密和解密
RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。
公钥、私钥的生成
def get_key():
// 生成公钥、私钥
pubkey, privkey = rsa.newkeys(1024)
// 公钥、私钥进行转换,以便存储。
// save_pkcs1 为内置方法,默认值为“PEM”
pub = pubkey.save_pkcs1()
priv = privkey.save_pkcs1('PEM')
// 创建文件,进行存储
with open('pubkey.pem', mode='wb') as f:
f.write(pub)
with open('privkey.pem', mode='wb') as f:
f.write(priv)
生成文件如下图:
可以将生成的公钥、私钥粘贴复制存储起来,以便使用:
加密
def rsa_encrypt_password(encrypted_password):
"""
rsa公钥加密
"""
return rsa.encrypt(encrypted_password.encode('utf-8'),
rsa.PublicKey.load_pkcs1(settings.RSA_PUB_KEY))
解密
def rsa_decrypt_password(encrypted_password):
"""
rsa私钥解密
"""
return rsa.decrypt(encrypted_password, rsa.PrivateKey.load_pkcs1(settings.RSA_PRIV_KEY))
使用
aa = rsa_encrypt_password('aaaa')
print(aa)
r_aa = rsa_decrypt_password(aa)
print(r_aa.decode('utf-8')) // 使用之前必须先解码
扩展
在使用中, 通常会先对数据进行bas64加密, 再对加密后的内容使用rsa加密, 最后对rsa解密后的内容进行bas64解密.
base64 + ras 加密
def rsa_encrypt_password(encrypted_password):
"""
rsa加密
"""
return base64.b64encode(rsa.encrypt(encrypted_password.encode('utf-8'),
rsa.PublicKey.load_pkcs1(settings.RSA_PUB_KEY)))
base64 + ras 解密
def rsa_decrypt_password(encrypted_password):
"""
rsa解密
"""
return rsa.decrypt(base64.decodestring(encrypted_password),
rsa.PrivateKey.load_pkcs1(settings.RSA_PRIV_KEY))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通