微信小程序> 微信小程序RSA加密解密加签验签

微信小程序RSA加密解密加签验签

浏览量:2285 时间: 来源:UFO00001

效果演示:

小程序

Github链接:https://github.com/UFO0001/WX_RSA

简要说明:

1. 将 wx_rsa.js文件copy到自己想放置的目录下,并在需要用到的js文件中引用 如:

var RSA = require('../../utils/wx_rsa.js')
2. 在对应的触发事件下进行相应的

加密:

var input_rsa = this.data.input;    var encrypt_rsa = new RSA.RSAKey();    encrypt_rsa = RSA.KEYUTIL.getKey(publicKey);    encStr = encrypt_rsa.encrypt(input_rsa)    encStr = RSA.hex2b64(encStr);    console.log("加密结果:" + encStr)

解密:

 var decrypt_rsa = new RSA.RSAKey();    decrypt_rsa = RSA.KEYUTIL.getKey(privateKey);    if (encStr.length =0){      wx.showToast({        title: '请先加密',        icon: 'loading',        duration: 1000      })    }else{      encStr = RSA.b64tohex(encStr);      console.log(encStr + "001--100")      var decStr = decrypt_rsa.decrypt(encStr)      console.log("解密结果:" + decStr)      this.setData({        output: decStr      })    }

加签:

    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    })

验签:
 var verify_rsa = new RSA.RSAKey();    verify_rsa = RSA.KEYUTIL.getKey(publicKey);    if (Sig == ""){      wx.showToast({        title: '请先验签',        icon: 'loading',        duration: 1000      })    }else{      Sig = RSA.b64tohex(Sig)      var ver = verify_rsa.verifyString("signData", Sig)      console.log('验签结果:' + ver)      this.setData({        output: Sig      })    }

3. 注意区分RSA私钥的类型,分为pkcs1和pkcs8, pkcs8格式的私钥主要用于Java中

 pkcs1格式:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY------

 pkcs8格式:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----


4. 附一个在线生成RSA密钥的链接:http://www.bm8.com.cn/webtool/rsa/


5. 加密、签名 简介

数据加密:用公钥加密,只有用私钥解开,因为私钥只有你自己有,所以他保证了数据不能被别人看到
数据签名:用私钥加密,只能用公钥解密,任何人都可以用公钥验证。因为私钥只有你自己有,所以它可以保证数据只能是你发出的,不可能有别人发出,除非你得私钥丢失或被第三方破解出来。

签名起不到加密作用,但可以确定是谁发出的信息
使用公钥加密算法,可以对明文进行加密,但不能确定是谁发出该消息


欢迎留言交流指正 谢谢!:)

本文链接:http://blog.csdn.net/ufo00001/article/details/72822907


版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎