RSA不对称加密的二维码扫描微信小程序

331 阅读1分钟

总得放点代码,不然也不好意思在掘金混啊。

const rootPath = '../../';
var request = require(rootPath + 'common/request.js');
var common = require(rootPath + 'common/common.js');
var config = require(rootPath + 'common/config.js');
//var CryptoJS = require(rootPath + 'util/crypto-js.js');
var Encrypt = require(rootPath + 'util/jsencrypt.js');
//var RSA = require(rootPath + 'util/wx_rsa.js');
var privateKey = ''
function heredoc(fn) {
    //return fn.toString().split('\n').slice(1,-1).join('\n') + '\n'
    return fn.toString().split('\n').slice(1,-1).join('') + ''
}
privateKey = heredoc(function(){/*
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAh2fqH4cZoHQsVUuer5BjMaPpZwT5UGxNWTieMzyFfOGPmBju
Kkv0ZayhR4ljzQ0K4NF2dMBbmSlraD3o+76Kjb0xZ56DqP9fPubzD77MrXJFrCjH
//省略KEY数据
-----END RSA PRIVATE KEY-----
*/});
var options = {
    scanCode() {
        var myThis = this;
        var encStr='TlcgbGeQAd3TJmM4Fj/OJ6iwWKSGWE/tPc1IFWdJn6Owkvw/sS6ckDO9AOUaf/Zm4HRK//省略KEY数据=='
        var decrypt = new Encrypt.JSEncrypt()//创建解密对象实例
        //之前ssl生成的秘钥
        var priKey  = privateKey
        decrypt.setPrivateKey(priKey)//设置秘钥
        var uncrypted = decrypt.decrypt(encStr)//解密之前拿公钥加密的内容
        console.log(uncrypted)
        //var decrypt_rsa = new RSA.RSAKey();
        //console.log(privateKey)
        //decrypt_rsa = RSA.KEYUTIL.getKey(privateKey);
        //console.log('解密RSA:')
       // console.log(decrypt_rsa)
        //const decryptor = new Encrypt.JSEncrypt();
        //decryptor.setPrivateKey(privateKey);

![11f5da81f651d5796255ccc0b9de56ed_openai-gpt-3-ai-artificial-intelligence-development-developer-playground-codex.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/050c7b561b6248638c4ac37eacd93bbe~tplv-k3u1fbpfcp-watermark.image?)
        //console.log(encStr + "00--00")
        //const rsa=new JSEncrypt();
        //mi = RSA.b64tohex(mi); 
        //mi=wx.base64ToArrayBuffer('mi')
       // encStr = RSA.b64tohex(encStr);
        //console.log(encStr + "001--100")
        //var decStr = decrypt_rsa.decrypt(encStr)
        //console.log("解密结果:" + decStr)
        //var ming = decryptor.decrypt(mi);
        //console.log("密文:", mi);
        //console.log("明文:", ming);
        wx.scanCode({
            success(res) {
                //console.log(res.result)
                //strEnc=DESencrypt(res.result);
                var encStr=res.result;
                var strEnc=decrypt.decrypt(encStr);
                myThis.setData({
                    result: strEnc
                    //scanType: res.scanType
                })
            }
        })
    },
    scanCode2() {
        var myThis = this;
        console.log(this.DESdecrypt('7v5pIMU/o7kH8JwE9D/g5sOGAVwzjaP2Anm2y83EfFO0OS9U8mA6J26yIzceaMnIog//省略KEY数据=='));
        wx.scanCode({
            success(res) {
                //console.log(res.result)
                strEnc=DESencrypt(res.result);
                myThis.setData({
                    result: res.result,strEnc
                    //scanType: res.scanType
                })
            }
        })
    },
    data: {
        result:"等待扫描"
      },
    DESdecrypt(encToStr) {
        var keyHex=CryptoJS.enc.Utf8.parse("ahbihdulibinfo0571udf90w");
        var decrypted = CryptoJS.DES.decrypt(encToStr, keyHex, {
            modeCryptoJS.mode.ECB,
            paddingCryptoJS.pad.Pkcs7
        });
        return(decrypted.toString(CryptoJS.enc.Utf8));
    },
    DESencrypt(strToEnc) {
        //var keyHex = CryptoJS.enc.Utf8.parse("ahbihdulibinfo34sx76dssd333hdudfd90w");
        var keyHex = CryptoJS.enc.Utf8.parse("ahbihdulibinfo0571udf90w");
        ////var keyHex='secretkey 134';
        //console.log(CryptoJS);
        //var encrypted = CryptoJS.DES.encrypt(strToEnc, keyHex, {
        //    mode: CryptoJS.mode.ECB,
        //    padding: CryptoJS.pad.Pkcs7
        //});
        //console.log(encrypted.toString());
        var encrypted = CryptoJS.DES.encrypt(strToEnc, keyHex, {
            modeCryptoJS.mode.ECB,
            paddingCryptoJS.pad.Pkcs7
        });
        return(encrypted.toString());
    },

};
Page(options);