美文网首页
js实现rsa加解密及分段加解密2048bits

js实现rsa加解密及分段加解密2048bits

作者: 欣仔吖 | 来源:发表于2018-01-19 14:04 被阅读0次

    直接加密跟解密是引入jsencrypt.js直接调用方法就可以;分段加密的话是需要修改jsencrypt.js添加encryptLong()和decryptLong()方法;

    附代码:

    加密:

                var encrypt = new JSEncrypt();

                encrypt.setPublicKey(this.pubKey);

                encrypt.enctypt("要加密的内容")

    解密: 

            var decrypt = new JSEncrypt();

            decrypt.setPrivateKey(privateKey);

            uncrypted = decrypt.decrypt("要解密内容");

    分段加密:

    JSEncrypt.prototype.encryptLong = function(string) {

        var k = this.getKey();

        var maxLength = (((k.n.bitLength()+7)>>3)-11);

        try {

          var lt = "";

          var ct = "";

          if (string.length > maxLength) {

            lt = string.match(/.{1,245}/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;

        }

      };

    分段解密:

      JSEncrypt.prototype.decryptLong = function(string) {

        var k = this.getKey();

        var maxLength = ((k.n.bitLength()+7)>>3);

        try {

          var string = b64tohex(string);

          var ct = "";

          if (string.length > maxLength) {

            var lt = string.match(/.{1,512}/g);

            lt.forEach(function(entry) {

              var t1 = k.decrypt(entry);

              ct += t1;

            });

            return ct;

          }

          var y = k.decrypt(b64tohex(string));

          return y;

        } catch (ex) {

          return false;

        }

      };

    如有不对,望留言修正 谢谢。

    相关文章

      网友评论

          本文标题:js实现rsa加解密及分段加解密2048bits

          本文链接:https://www.haomeiwen.com/subject/tekwoxtx.html