微信小程序(17)-- RSA加密 解密 加签 验签
RSA加密 解密 加签 验签
/**
* 注:区分RSA私钥的类型,有pkcs1和pkcs8。pkcs8格式的私钥主要用于Java中 pkcs1格式:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY------ pkcs8格式:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY----- */
1. 将 wx_rsa.js文件copy到自己想放置的目录下,并在需要用到的js文件中引用 如:
var RSA = require('../../utils/wx_rsa.js')
//获取应用实例
var app = getApp()
var Sig = ""
var encStr =""
2. 在对应的触发事件下进行相应的操作:
var privateKey = '-----BEGIN RSA PRIVATE KEY-----MIICXgIBAAKBgQCoChRDJ6e7BTE5yYBIS + NGYBpDs7ftEematqhvMmOFcJng7qjJk + yJ1j7DCqbCD2f / BI6gTfGXASiYuO6kklZu8Pkw4HAUkaaGyhaC8Z + TMg79PPRz5hziEdFXPTdXvXudiXbI2Wi6D90ZaSwN6ZHs7Mtc5VgGK3jxS35iLm+ oAQIDAQABAoGBAI + nHi9SxUdSZwS5yBsGFSNioNFj4Eag243RvShicUXwPvxVyqGY / cvQBhODFZAsz4Dpimxsda3b5bK51fmGyK / nXraHRunWcG7cDDB0EnRpGh4LvMI5Tny + kV0v07N0kkYF+ Lig88IjyBXMAY8m97QK / Huf6MsDFo7B6maSvlmBAkEA35GXk6achryGAoUyyLSro7bI9A9 + wXWFdXoqu1 / X1sZ8taGy7saB + XEA6EQ + XHRp7rZkQ5StoBL +reDGvLJLWQJBAMBqW / F + qg1VpmV / EfYTSS0 + jliw / Ik4kKHLuD / bYK61FG80JIoxLbelB / 1ZVZ8WR0cUKgrmoo8HOggjocNTNOkCQQCYibK86CHGAF0C3TSgIj01r2H+u4 / FmVScqeT8AVG31aeDGbeHGOPXeJWg4 + cUl80rNUDFp2yrWipwInwWhSPJAkAf+ 02u9Ru0vbC7nARTP19hWs10Jm7DLBi2G9NTIdaPE2ADH8qXAZeUt6R9UrTtjVlpkgtu5mjMlynpImsHuTPJAkEAoU10QspqfxL4F44KdHjHY1btc8wb4soaLy / eAY8PLE + jpNh8jsqA8v1EqLQbYz50D / BpkJsT5W + wydTvtEE3sA ==-----END RSA PRIVATE KEY-----'
var publicKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCoChRDJ6e7BTE5yYBIS + NGYBpDs7ftEematqhvMmOFcJng7qjJk + yJ1j7DCqbCD2f / BI6gTfGXASiYuO6kklZu8Pkw4HAUkaaGyhaC8Z+ TMg79PPRz5hziEdFXPTdXvXudiXbI2Wi6D90ZaSwN6ZHs7Mtc5VgGK3jxS35iLm+ oAQIDAQAB-----END PUBLIC KEY-----'
加密:
jiami: function () {
var input_rsa = this.data.input;
var encrypt_rsa = new RSA.RSAKey();
encrypt_rsa = RSA.KEYUTIL.getKey(publicKey);
console.log('加密RSA:')
console.log(encrypt_rsa)
encStr = encrypt_rsa.encrypt(input_rsa)
encStr = RSA.hex2b64(encStr);
console.log("加密结果:" + encStr)
this.setData({
output: encStr
})
},
解密:
jiemi: function () {
var decrypt_rsa = new RSA.RSAKey();
decrypt_rsa = RSA.KEYUTIL.getKey(privateKey);
console.log('解密RSA:')
console.log(decrypt_rsa)
console.log(encStr+"00--00")
if (encStr.length <=){
wx.showToast({
title: '请先加密',
icon: 'loading',
duration:
})
}else{
encStr = RSA.b64tohex(encStr);
console.log(encStr + "001--100")
var decStr = decrypt_rsa.decrypt(encStr)
console.log("解密结果:" + decStr)
this.setData({
output: decStr
})
}
},
加签:
jiaqian: function () {
console.log('加签RSA1:')
var sign_rsa = new RSA.RSAKey();
sign_rsa = RSA.KEYUTIL.getKey(privateKey);
console.log('加签RSA:')
console.log(sign_rsa)
var hashAlg = 'sha1';
Sig = sign_rsa.signString("signData", hashAlg);
Sig = RSA.hex2b64(Sig); // hex 转 b64
console.log("加签结果:" + Sig)
this.setData({
output: Sig
})
},
验签:
yanqian: function () {
var verify_rsa = new RSA.RSAKey();
verify_rsa = RSA.KEYUTIL.getKey(publicKey);
console.log('验签RSA:')
console.log(verify_rsa)
if (Sig == ""){
wx.showToast({
title: '请先验签',
icon: 'loading',
duration:
})
}else{
Sig = RSA.b64tohex(Sig)
var ver = verify_rsa.verifyString("signData", Sig)
console.log('验签结果:' + ver)
this.setData({
output: ver
})
}
},
微信小程序(17)-- RSA加密 解密 加签 验签的更多相关文章
- 微信小程序之用户数据解密(七)
[未经作者本人同意,请勿以任何形式转载] 经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程: 加密过程微信服务器完成,解密过程在小程序和自身服务器完成, ...
- 原创:微信小程序java实现AES解密并获取unionId
来自:微信小程序联盟 如果大家使用小程序的同时还在使用公众号的话,可能会用到unionId这种功能,由于公司业务需要,我们需要使用unionId,具体使用方法,请参考微信开放平台的说明,但是在微信小程 ...
- 微信小程序中使用ECharts 异步加载数据 实现图表
<!--pages/bar/index.wxml--> <view class="container"> <ec-canvas id="my ...
- 微信小程序 scroll-view 完成上拉加载更多
我们经常在软件客户端上看到这么一个功能,当我们阅读信息浏览到文章的末尾时,通常会加载出更多的信息.比如,我们在简书客户端上浏览推荐文章时,浏览到屏幕的末尾,此时又加载出了另一页的推荐文章,即实现了上拉 ...
- RSA密钥生成、加密解密、签名验签
RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...
- PHP 生成公钥私钥,加密解密,签名验签
test_encry.php <?php //创建私钥,公钥 //create_key(); //要加密内容 $str = "test_str"; //加密 $encrypt ...
- 微信小程序 - (下拉)加载更多数据
注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'& ...
- C# 数字证书 RSA加密解密 加签验签
KeyValuePair<string, string> keyPair = Encrypter.CreateRSAKey(); string privateKey = keyPair.V ...
- 微信小程序-上传多张图片加进度条(支持预览、删除)
2018-12-24 详情示例见:https://www.cnblogs.com/cisum/p/9564898.html 2018-12-29 组件下载见:https://www.cnblogs.c ...
随机推荐
- redis下载及安装教程
https://blog.csdn.net/w546097639/article/details/88547486
- 06 IntelliJ IDEA构建多模块项目
- stack1顺序栈
顺序栈 #include<iostream> using namespace std; #define increasesize 10 template <class Object& ...
- UVA 1045 最长公共子序列
题目描述:求最长公共子序列 若给定序列X={x1,x2,...,xm},另一序列Z={z1,z2,...,zk},是X的子序列是指存在一个严格递增的下标序列{i1,i2,...,ik}使得对所以j=1 ...
- Ehcache配置项及持久化到硬盘
EhCache 常见的配置项: cache元素的属性 name:缓存名称 maxElementsInMemory:内存中最大缓存对象数 maxElementsOnDisk:硬盘中最大缓存对象数,若是0 ...
- LookupError: "gw_lt" is not among the defined enum values
LookupError: "XXX" is not among the defined enum value 查找错误:“xxx”不在定义的枚举值中 model.py中没有增加对应 ...
- org.w3c.dom。 XML解析 练习
HTML文档 1 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; ...
- Unity3D移动端电量与wifi信号的获取
移动端游戏中无法看到电量与wifi信号对于玩家来说是很困扰的事. 关于这个问题安卓与iOS有不同的方法 电量 安卓 安卓获取电量有两种方法,一种是读取安卓手机里的一个文件,一种是利用安卓与Unity互 ...
- 机器学习实战笔记-11-Apriori与FP-Growth算法
Apriori算法 优点:易编码实现:缺点:大数据集上较慢:适用于:数值型或标称型数据. 关联分析:寻找频繁项集(经常出现在一起的物品的集合)或关联规则(两种物品之间的关联关系). 概念:支持度:数据 ...
- Win7崩溃程序目录
很烦,占用系统空间,毫无用处 C:\Users\你的用户名\AppData\Local\CrashDumps C:\Users\你的用户名\AppData\Local\Microsoft\Window ...