微信小程序使用npm方式增加jsencrypt rsa加密验证

本文详细介绍了在微信小程序中使用npm安装并配置jsencrypt库进行RSA加密的步骤,包括构建npm、修改加密文件及正确引用jsencrypt。解决了常见错误如UncaughtTypeError和JSEncryptisnotaconstructor。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、npm安装jsencrypt

二、微信小程序构建npm

三、微信开发者工具的设置

四、修改构建后的jsecnrypt文件

五、使用jsencrypt进行rsa加密

六、实际完成rsa验证并非一帆风顺,不过按照第一到第五步操作,肯定是没问题的


一、npm安装jsencrypt

1.cmd切换到小程序的目录

2.执行npm init,按照具体情况在cmd里面填写相关的字段,之后小程序会多这两个文件

3.执行mkdir node_modules,创建node_modules文件夹

4.npm install jsencrypt,安装jsencrypt

npm init

mkdir node_modules

npm install jsencrypt

二、微信小程序构建npm

1.微信开发者工具打开小程序

2.选择上方工具,然后选择二级菜单中的构建npm

3.构建npm后,会出现miniprogram_npm文件夹,这就是小程序需要用的npm包文件

4.注意,每次执行工具》构建npm,miniprogram_npm文件夹都会重置,也就是说如果构建后你有改动过哪些包的js,那你在每次执行工具》构建npm后,都要再改一遍。

三、微信开发者工具的设置

1.微信开发者工具右上方的详情》本地设置》勾选使用npm模块与ES6转ES5

四、修改构建后的jsecnrypt文件

1.打开miniprogram_npm》jsencrypt>index.js文件

2.在}(this, (function (exports) {代码下面添加下方代码

var navigator = {
  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 window = {
  ASN1: null,
  Base64: null,
  Hex: null,
  crypto: null,
  href: null
};

五、使用jsencrypt进行rsa加密

1.需要用jsencrypt加密的文件js里面引用jsencrypt

import { JSEncrypt } from "jsencrypt";//引用jsencrypt
let publicKey = app.abbr.publicKey;//引用公钥,也可以接口请求过来,不过我的项目是写在文件固定的
var jsencrypt = new JSEncrypt();//实例化jsencrypt
jsencrypt.setPublicKey(publicKey);/jsencrypt设置公钥

2.对需要rsa加密的字段进行加密

let username = jsencrypt.encrypt(this.data.username );//对需要rsa加密的字段加密

3.关于encrypt的引用方式见下方解释

// const JSEncrypt = require('../../../miniprogram_npm/jsencrypt/index.js')//不OK
// const JSEncrypt = require('jsencrypt')//不OK
// import { JSEncrypt } from "../../../miniprogram_npm/jsencrypt/index.js";//OK
import { JSEncrypt } from "jsencrypt";//OK

六、实际完成rsa验证并非一帆风顺,不过按照第一到第五步操作,肯定是没问题的

1.构建npm然后直接引用jsencrypt后,会出现WAService.js:1 Uncaught TypeError: Cannot read property 'appName' of undefined这个问题

解决方法:上方第三步

ps:我跟着网上的方法,注释掉navigator的判断,留下一个else里面的操作;复制网上crypto处报错的处理;删除addeventlistener监听;最后还是有问题。

问题表现:

(1)相关的页面打不开,提示not registered

(2)jsencrypt not undefined

这两个问题都可以通过重新构建npm,然后跟着上方第三步的方法更改,即可解决。很神奇!

2.下载,修改,引用jsencrypt后,控制台报错JSEncrypt is not a constructor

解决方法,见上方第四步第三小点,是因为引用encrypt的方式不对

要用import引用,不能用require引用,原因未知,反正这么引用就好了。

### 实现微信小程序中的 JSEncrypt 加密 要在微信小程序使用 `JSEncrypt` 进行 RSA 加密,可以通过 npm 方式引入并配置。以下是详细的实现过程以及示例代码。 #### 1. 安装依赖 通过 npm 安装 `jsencrypt` 库到微信小程序项目中。执行以下命令来安装库: ```bash npm install jsencrypt --save ``` 完成安装后,在微信开发者工具中同步 npm 包至本地工程目录下,并确保在 `project.config.json` 文件中启用 npm 支持[^1]。 #### 2. 配置与引用 在需要使用的页面或模块中导入 `JSEncrypt` 并初始化对象: ```javascript // 引入 JSEncrypt 模块 import { JSEncrypt } from 'jsencrypt'; Page({ data: { publicKey: '', // 存储公钥 encryptedData: '' // 存储加密后的数据 }, onLoad() { this.setData({ publicKey: '-----BEGIN PUBLIC KEY-----\n' + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8rWwS7vXkajFtUSZc...' + '\n-----END PUBLIC KEY-----' }); const encrypt = new JSEncrypt(); // 初始化 JSEncrypt 对象 encrypt.setPublicKey(this.data.publicKey); // 设置公钥 const originalText = 'This is a secret message'; // 原始明文消息 const encryptedMessage = encrypt.encrypt(originalText); // 执行加密操作 console.log('Encrypted Message:', encryptedMessage); this.setData({ encryptedData: encryptedMessage }); // 更新界面显示加密结果 } }); ``` 上述代码展示了如何加载公钥并通过 `JSEncrypt` 的 `encrypt()` 方法对指定字符串进行加密处理[^2]。 #### 3. 解决可能遇到的问题 如果在 uni-app 或其他跨平台框架中运行时发现报错,则可能是由于环境差异引起兼容性问题。此时需确认所选版本是否支持当前开发环境下的 WebCrypto API 调用[^4]。 另外需要注意的是,虽然非对称加密提供了更高的安全性保障,但由于其计算量较大,在性能敏感场景下应谨慎选用;对于高频次交互需求建议采用混合模式——即先利用非对称机制交换会话秘钥再切换成效率较高的对称加密方式进行后续通信[^5]。 #### 示例总结 以上便是完整的微信小程序集成 JSEncrypt 插件用于 RSA 数据保护的操作指南及其配套脚本片段展示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值