# WX_RSA **Repository Path**: xinxi17_admin/WX_RSA ## Basic Information - **Project Name**: WX_RSA - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-02-16 - **Last Updated**: 2022-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 效果演示:http://blog.csdn.NET/ufo00001/article/details/72822907 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. 加密、签名 简介 数据加密:用公钥加密,只有用私钥解开,因为私钥只有你自己有,所以他保证了数据不能被别人看到 数据签名:用私钥加密,只能用公钥解密,任何人都可以用公钥验证。因为私钥只有你自己有,所以它可以保证数据只能是你发出的,不可能有别人发出,除非你得私钥丢失或被第三方破解出来。 签名起不到加密作用,但可以确定是谁发出的信息 使用公钥加密算法,可以对明文进行加密,但不能确定是谁发出该消息