python非对称加密及保存数据库

python非对称加密及保存数据库

使用python标准包rsa
  加密和解密网上一搜一大堆,但是如何保存在数据中并在取出时可以正确解密就很烦人,然后发现将加密的数据进行base64编码即可正常存入数据库中,解密时只需使用base64解码一下就行了。

  1. 生成对应的密钥和公钥:
pubkey, privkey = rsa.newkeys(1024)
  1. 保存公钥、密钥
# 公钥
with open('public.pem', 'w+') as f:
    f.write(pubkey.save_pkcs1().decode())
# 密钥
with open('privkey.pem', 'w+') as f:
    f.write(privkey.save_pkcs1().decode())
  1. 加密数据
# 导入公钥
with open('pubkey.pem', 'r') as f:
    pubkey = rsa.Publickey.load_pkcs1(f.read().encode())
  1. 保存数据
      如果要保存在数据库中,那么此时保存进去的数据,在取出来后无法进行解密,一方面有编码问题,一方面是存储方式不当。
      此时选用base64编码转换后进行保存,解密时在进行base64解码即可。
import base64
crypto = rsa.encrypt(data, pubkey)
crypto = base64.encodestring(crypto)

# 现在存入数据库
  1. 解密数据
      取出加密的数据时只需使用base64解码一下,即可进行正常解密
# 去除数据
crypto = base64.decodestring(crypto.encode('utf-8'))
data = rsa.decrypt(crypto, privkey).decode()
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值