美文网首页RN知识
RN - jsencrypt 非对称加解密(分段加解密)

RN - jsencrypt 非对称加解密(分段加解密)

作者: 精神病患者link常 | 来源:发表于2019-04-25 19:44 被阅读22次
    
    /******************************加密相关***********************************/
    /*文本通过socket发送需要加密*/
    
    /**
     * [getPublicKey 获取公钥]
     * @param  {[type]} publicKeyString [公钥字符串]
     */
    function getPublicKey(publicKeyString){
      return '-----BEGIN PUBLIC KEY-----' + publicKeyString + '-----END PUBLIC KEY-----';
    }
    
    /**
     * [getPrivateKey 获取私钥]
     * @param  {[type]} publicKeyString [私钥字符串]
     */
    function getPrivateKey(privateKeyString){
      return '-----BEGIN RSA PRIVATE KEY-----' + privateKeyString + '-----END RSA PRIVATE KEY-----';
    }
    
    /**
     * [rsaEncrypt 文本加密]
     * @param  {[type]} publicKey [公钥]
     * @param  {[type]} content   [内容]
     */
    function rsaEncrypt(publicKey, content){
    
      console.log('publicKey',publicKey)
      console.log('要加密的所有内容',content);
    
      let encrypt = new JSEncrypt();
      encrypt.setPublicKey(publicKey);
    
      // 要加密的文本超出最大字符限制,则分段加密
      let ct = []
      let maxLength = 20
      if (content.length > maxLength) {
        lt = content.match(/.{1,20}/g);
        console.log('文本数组===',lt);
        lt.map((item, index)=>{
          console.log('要加密的文字',item);
          let t1 = encrypt.encrypt(item);
          console.log('加密后的文字',t1);
          console.log('密后的文字的长度',t1.length);
          ct.push(t1)
        })
        return ct
      }
    
      return [encrypt.encrypt(content)]
    }
    
    /**
     * [rsaDecrypt 文本解密]
     * @param  {[type]} publicKey [私钥]
     * @param  {[type]} content   [加密后的内容[]]
     */
    function rsaDecrypt(privateKey, content) {
      console.log('privateKey',privateKey)
      if (content == undefined) return
      // 如果是分段加密的,则要分段解密
      let ct = ''
      content.map((item,index)=>{
        let decrypt = new JSEncrypt();
        decrypt.setPrivateKey(privateKey);
    
        console.log('要分段解密的=====',item);
        let t1 = decrypt.decrypt(item);
        console.log('解密结果========',t1);
      
        ct += t1;
      })
      return ct
    }
    
    

    相关文章

      网友评论

        本文标题:RN - jsencrypt 非对称加解密(分段加解密)

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