python非对称解密时的坑

这几天在做前后端的数据加密问题,前端使用vue ,使用JSEncrypt库对数据进行加密代码如下:

import JSEncrypt from "jsencrypt";  // 引入
import Vue from 'vue'

Vue.prototype.$jsEncrypt = JSEncrypt;  // 配置全局变量
// 配置公钥

let public_key =  "你的公钥"
// 加密

const RSAencrypt = (data) => {

    // 实例化对象

    let jseObj = new JSEncrypt();

    jseObj.setPublicKey(public_key)

    // 加密数据

    return jseObj.encrypt(data)

}

export {

    RSAencrypt

}
django作为后端对数据进行解密:这里有几个坑要注意。
1.实例化PKCS1_v1_5时,里面的密钥必须使用RSA.importKey包裹,不然会报莫名其妙的错
2.密钥中必须包含—–BEGIN PRIVATE KEY—–\n的格式,就是python生成什么不要随便删除
代码如下:
# # 对传入的数据格式进行转换
datas = base64.b64decode(data)
# print(datas)
# 从数据库中获取私钥
result = AllSetting.objects.filter(id=1)
if len(result) == 0:
    print('查找私钥失败,无法解析')
    return False

# 获取私钥
private_key = '-----BEGIN PRIVATE KEY-----\n' + result[0].private_key + '\n-----END PRIVATE KEY-----'

# # print(private_key)
cipher = PKCS1_v1_5.new(RSA.importKey(private_key))
# 解密
print('开始解密')
plaintext = cipher.decrypt(datas, b'rsa').decode()
print('解密后:', plaintext)

return plaintext

 

喜欢(1)

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎访问的小伙伴! 希望在这里能帮到你。有问题请多多指教~ 点击联系站长
在线客服

在线客服

  • 扫描二维码,微信联系 扫描二维码,进群联系