RSA加密jsencrypt.js

2018-03-08  本文已影响0人  半瓶不满

引入jsencrypt.js文件

/**
     * RSA加密
     * @param str
     * @returns {*}
     */
    cmdRSAEncrypt (str){
        let key ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtID8+nPhjcHtIIo+ACbcx4ijCyNMXRZeP5dCIaYaS915lFtrwFUPPzpTwA3OS12zQjowKh/v7ING0KhVQ66n+kI5oEUdAyqrBEYGCoUDszQ9SRm/zb3KR1dMjKrhRLEC3Q5h7zR7QMLKYg0/Qj0tJtHXsUMjxGE6Wes9dCNKewQIDAQAB"
            ,Encrypt = new JSEncrypt();
        Encrypt.setPublicKey(key);
        return Encrypt.encrypt(str);
    }

通过cmdRSAEncrypt(str)调用,
参数要转换格式JSON.stringify()。

加密参数过长?

有时加密时,会遇到加密参数过长而无法加密的现象,
在源码中加入以下代码,通过调用encryptLong方法,重新定义加密函数即可。

 JSEncrypt.prototype.encryptLong = function(string) {  
      var k = this.getKey();
      // var maxLength = (((k.n.bitLength()+7)>>3)-11);
      var maxLength = 117;

      try {
        var lt = "";
        var ct = "";

        if (string.length > maxLength) {
          lt = string.match(/.{1,117}/g);
          lt.forEach(function(entry) {
            var t1 = k.encrypt(entry);
            ct += t1 ;
          });
          return hex2b64(ct);
        }
        var t = k.encrypt(string);
        var y = hex2b64(t);
        return y;
      } 
      catch (ex) {
        return false;
      }
    };
上一篇下一篇

猜你喜欢

热点阅读