这几天在做前后端的数据加密问题,前端使用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
评论抢沙发