基于 jsencrypt 扩展的 RSA 非对称加密算法库
jsencrypt-plus
基于 jsencrypt 扩展的 RSA 非对称加密算法库
特性
-
支持微信小程序等非浏览器环境
-
支持长度超过 128 的明文串加解密
- encryptLong
- decryptLong
目录简介
当前库基于一个 uni-app 项目开发,这样比较方便调试。
- src/jsencrypt.js 开发调试用的 jsencrypt-plus 代码
- index.js 压缩后用于发布的 jsencrypt-plus 代码
demo
为方便前后端协作调试,简单学习了一下其他语言的相关知识。
- Java
- PHP
按照『前端公钥加密后端私钥解密』的方案,在本地测试通过后,精简出示例代码,以供参考。
使用指南
安装
$ npm install jsencrypt-plus
初始化配置
import JSEncrypt from 'jsencrypt-plus';
var PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN
FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76
xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4
gwQco1KRMDSmXSMkDwIDAQAB
-----END PUBLIC KEY-----`;
var PRIVATE_KEY = `-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
-----END RSA PRIVATE KEY-----`;
var data = {
service: 'api',
path: 'register',
version: '1.0.0',
username: 'xiaoming',
password: '123456',
email: '[email protected]',
code: 'ABCD',
phone: '1234567890123'
};
data = JSON.stringify(data);
公钥加密
var encryptContext = new JSEncrypt();
encryptContext.setPublicKey(PUBLIC_KEY);
var encryptedData = encryptContext.encryptLong(data);
console.log('加密后的结果:', encryptedData);
私钥解密
var decryptContext = new JSEncrypt();
decryptContext.setPrivateKey(PRIVATE_KEY);
var decryptedData = decryptContext.decryptLong(encryptedData);
console.log('解密后的结果:', decryptedData);
支持的平台
没有勾选是尚未测试到的平台,欢迎各位同学进行补充。
预览效果
浏览器
执行以下命令后,即可在浏览器中体验。
$ npm run serve
微信小程序
方法一:
直接点击 https://developers.weixin.qq.com/s/xWng0Pmw76kN 打开代码片段。
方法二:
打开微信开发者工具,选择“代码片段”点击右下角的“导入”,填写该分享链接即可。