uni-app 小程序 rsa 加密 使用的是 jsencrypt

main.js文件

//引入js文件
import security_http_config from './common/security.js'//封装的接口
Vue.prototype.proims = (data, url, contentType) => {//重要的地方**let currentKey = security_http_config.createKey();**const token_u = uni.getStorageSync('token');data.token = token_u;return new Promise((resolve, u) => {uni.request({url: httpurl + url,//重要的地方**data: security_http_config.transform('post', data, currentKey),**method: 'post',header: {token: uni.getStorageSync('token'),//重要的地方'Content-Type': contentType || "application/json",ff8d82a3d6654309b17c97289c9c78fc: 'headerEncoding:base64;contentEncoding:base64',ff974421535f45508a8931b6432ffbf5: security_http_config.rsa(currentKey, uni.getStorageSync('key'))},dataType: 'json',success: function(res) {if (res.data.code == 200) {} resolve(res)},fail: function(res) {uni.showToast({title: '请稍后重试',icon: 'none',duration: 1200});}})})
};

这里是放在common文件里面了 可以自己定义。uni.getStorageSync(‘key’)是通过接口获取的

security.js文件

import CryptoJS from './crypto.js'
import JSEncrypt from './jsencrypt.js'function transform(type, data, key) {if (!data) {return ""}let dataStr = ''if (typeof(data) === "object") {if (type == 'get') {var str = [];for (var k in data) {var v = data[k];if (typeof(v) === 'Array') {var name = encodeURIComponent(k) + "[]";var len = v.length;for (var i = 0; i < len; i++) {str.push(name + "=" + encodeURIComponent(v[i]));}} else {str.push(encodeURIComponent(k) + "=" + encodeURIComponent(v));}}dataStr = str.join("&");} else if (type == 'post') {dataStr = JSON.stringify(data);}} else if (typeof(data) === "String") {} else {throw "发送请求数据必须是字符串或者对象"}return aes(dataStr, key);
}function aes(data, key) {var data1 = CryptoJS.CryptoJS.enc.Utf8.parse(data);var key1 = CryptoJS.CryptoJS.enc.Utf8.parse(key);var iv1 = CryptoJS.CryptoJS.enc.Utf8.parse("org.slf4j.Logger");var result = CryptoJS.CryptoJS.AES.encrypt(data1, key1, {iv: iv1,mode: CryptoJS.CryptoJS.mode.CBC,padding: CryptoJS.CryptoJS.pad.Pkcs7});return result.toString();
}function rsa(data, publicKey) {var encrypt = new JSEncrypt.JSEncrypt();encrypt.setPublicKey(publicKey);return encrypt.encrypt(data);
}function createKey() {var key = "";var hexDigits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for (var i = 0; i < 16; i++) {key += hexDigits.substr(Math.floor(Math.random() * 62), 1);}return key;
}
module.exports = {transform: transform,rsa: rsa,createKey: createKey
}

jsencrypt.js可以通过npm 下载。命令:wxmp-rsa。然后创建文件,把js引入就行

uni-app 实现小程序rsa加密(非对称加密原理)相关推荐

  1. uni App 支付宝小程序分享代码

    封装获取当前页面的路由信息 export function getCurrentPath() {let currentRoutes = getCurrentPages(); // 获取当前打开过的页面 ...

  2. 微信小程序RSA加密与 Java RSA加密结果相同

    业务需要,小程序上送到后台的数据需要使用RSA加密,后台返回的数据需要RSA解密.折腾了好久,微信小程序的加解密结果始终不一样.终于解决这问题记录一下. PS:后续使用过程中,发现小程序加密内容过长的 ...

  3. 实现uniapp的app和小程序开发中能使用axios进行跨域网络请求,并支持携带cookie

    实现uniapp的app和小程序开发中能使用axios进行跨域网络请求,并支持携带cookie 1-使用npm install axios;命令安装axios 2-新建一个文件夹再建一个.js后缀文件 ...

  4. 安卓APP和小程序渗透测试技巧总结

    安卓APP和小程序渗透测试技巧总结 免责声明: 安卓7以上抓取https流量包 证书信任 首先安装OpenSSL,此步骤不再赘述,可以参考百度. 然后安装模拟器(我使用的是夜神模拟器). 导出需要的证 ...

  5. uniapp 公众号打开小程序,app打开小程序,小程序打开其他小程序

    (公众号打开小程序) 第一步->进入项目目录: npm install jweixin-module --save 第二步->在要调用得页面里面 import jweixin from ' ...

  6. 视频教程-uni-app实战商城类app和小程序-Webapp

    uni-app实战商城类app和小程序 帝莎学院创始人&CEO,目前主要从事全栈开发.Python.PHP.小程序.App.Web等技术的研究和开发.专注于实战类教程,授课风趣幽默,讲解条理清 ...

  7. uniapp多端分享(app,小程序,公众号)

    前言 开发uniapp程序的项目,用它生成多端应用,由于兼容各种多端应用,程序代码需要相应的适配,在项目里分享功能是很常见的一个功能,但是在不同的端有不同的方法,我们如何实现多端分享呢?(app,小程 ...

  8. Android开发之APP唤醒小程序,打开小程序,调起小程序以及传参数的实现方法(附加源码)

    老套路咱们先看效果图: 可以先看下官方文档介绍:微信官方文档APP打开小程序链接 我这边打开了,上面奔溃是因为模拟器不兼容的原因: 主要讲解下打开小程序核心代码: // 填应用AppIdString ...

  9. 很多人花一大笔钱做APP、小程序

    很多人花一大笔钱做APP.小程序, 是纯粹为了做这个东西而做这个东西, 也就是说他们只是觉得需要这个东西, 但为什么需要? 如何使它发挥最大的价值? 其实他们心里并没有一个很清晰的概念. 而且事实上A ...

最新文章

  1. 分组加密的常用工作模式(转载)
  2. 傅里叶变换:周期、非周期 与连续、离散
  3. PyQt 5布局管理
  4. leetcode 377. Combination Sum IV | 377. 组合总和 Ⅳ(动态规划)
  5. 大数据学习路线copy自淘宝
  6. PbootCMS是全新内核且永久开源免费的PHP企业网站开发建设管理系统
  7. Mysql中的一绡规范约束,摘自《阿里巴巴 Java 开发手册》
  8. jQuery 版本viewer.js插件的结构分析与学习
  9. 基于编辑方法的文本生成(上)
  10. 【20180905】【计算机技术】为什么每次打印机都要手动设置双面打印?已解决~
  11. 最新PC微信多开——OD修改dll程序跳转逻辑实现多开
  12. Kali Linux上最佳安全测试工具
  13. Java Review(三十三、异常处理----补充:断言、日志、调试)
  14. python 以图搜图1688_以图搜图(一):python aHash算法
  15. 王者荣耀 露娜 技巧-教学-总结
  16. 小书匠配置github图床服务(详细版)
  17. Python人脸微笑识别2-----Ubuntu16.04基于Tensorflow卷积神经网络模型训练的Python3+Dlib+Opencv实现摄像头人脸微笑检测
  18. 浅谈强化学习二之马尔卡夫决策过程与动态规划
  19. Python0基础(上)——期末不挂科
  20. unity 卡通风格渲染

热门文章

  1. 2021甘肃高考成绩查询时间几点,2021年甘肃高考成绩什么时候出来,今天几点钟出成绩可以查询...
  2. 锁相环PLL/MMCM的使用
  3. django mysql5.7_GitHub - qiubiteme/DjangoBloger: 一个Django2.0+mysql57,实现的响应式博客
  4. sqlserver模糊查询不用like_vlookup配合通配符,模糊查询也能很精确,再也不用筛选了...
  5. 自由轴法 matlab,一种自由轴法RLC测量电路设计
  6. classpath*: 和classpath:有什么区别_我们可以从Java“HelloWorld”中学到什么?
  7. 说实话,这个发布会绝了!
  8. 485通信自动收发电路,历史上最详细的解释
  9. HDLBits答案(13)_Verilog移位寄存器附加题
  10. 函数进阶_月隐学python第11课