uni-app 使用 jsencrypt (已解决)

2 篇文章 1 订阅
1 篇文章 0 订阅

uni-app 使用 jsencrypt

在uni-app项目开发中,为了数据的安全性,使用了jsencrypt对数据进行加密,在PC端或h5端都没有问题,但是运行到微信开发中工具时,却总报错,网上查了一下,发现有很多帖子在介绍、说明原因,如:
https://blog.csdn.net/qq_36501494/article/details/105153122

文章中中指出报错原因是:插件使用了 window 对象,然后不管是app还是小程序中都没有窗口对象的环境,就导致不能用 window,一用这脚本就会报错, 解决办法,修改jsencrypt.js源码

解决方法是在jsencrypt.js文件插入以下代码


   var modificationNavigator = {
    appName: 'Netscape',
    userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 	(KHTML, like  	 Gecko) Version/9.0 Mobile/13B143 Safari/601.1'
  };
   var modificationWindow = {
    ASN1: null,
    Base64: null,
    Hex: null,
    crypto: null,
    href: null
  };

然后把jsencrypt.js文件里面的变量
navigator全部替换为 modificationNavigator
window全部替换为 modificationWindow

但是,当我尝试时发现,无论是通过npm安装jsencrypt.js,还是单独下载并引入为压缩前的jsencrypt文件,都是不能正常使用的,因为jsencrypt更新后依赖其它文件,不再是单独改jsencrypt.js就可以用的了,于是又找来了旧版本的jsencrypt.js文件,替换后可正常使用,旧版本和更改后的文件下载地址放在了下面,大家需要的话可自行下载。

旧版本的jsencrypt.js下载:
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-0c03b75a-8139-4654-83b3-f12d36df4bbe/7d18f8ab-3d99-4297-9010-c881f554297d.zip

更改后的uni-app可用(小程序可以)的jsencrypt.js下载:
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-0c03b75a-8139-4654-83b3-f12d36df4bbe/a4e593c9-fefa-41f6-9b94-28d904c607fd.zip

  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
uni-app 是一个基于 Vue.js 的跨平台开发框架,可以用于开发多端应用,包括iOS、Android、Web等。而 jsencrypt 是一个用于前端加密的 JavaScript 库,可以用于生成 RSA 密钥对、加密、解密等操作。 要在 uni-app 项目中使用 jsencrypt,可以按照以下步骤进行: 1. 下载 jsencrypt 库文件:可以从 jsencrypt 的 GitHub 页面(https://github.com/travist/jsencrypt)下载 js 文件,并将其放置在 uni-app 项目中的合适位置。 2. 在需要使用加密功能的页面中,引入 jsencrypt 库文件:在需要使用加密功能的页面的 script 标签中,使用 `import` 或 `require` 引入 jsencrypt 的库文件。 ```javascript import JSEncrypt from '@/path/to/jsencrypt.js'; // 或者 // const JSEncrypt = require('@/path/to/jsencrypt.js'); ``` 3. 使用 JSEncrypt 实例进行加密操作:创建一个 JSEncrypt 的实例,然后可以使用实例提供的方法进行加密、解密等操作。 ```javascript const encryptor = new JSEncrypt(); encryptor.setPublicKey(publicKey); // 设置公钥 const encrypted = encryptor.encrypt(plainText); // 加密明文 ``` 其中,`publicKey` 是 RSA 公钥字符串,`plainText` 是需要加密的明文字符串。可以根据实际情况将公钥传入,并使用 `encrypt` 方法进行加密。 注意:在使用 jsencrypt 进行加密时,通常需要服务端提供 RSA 密钥对,并将公钥传给前端进行加密操作。加密后的密文可以发送给服务端进行解密。 希望以上信息对你有帮助!如有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值