第四节:React Native加解密

最近工作忙,好久没更新,继续整理过去大半年的学习日志:
1,RN加解密:

    var key = CryptoJS.enc.Utf8.parse(key); //16位  
    var iv = CryptoJS.enc.Utf8.parse(key);var encrypted = '';
    if (typeof(word) == 'string') {        
        var srcs = CryptoJS.enc.Utf8.parse(word);       
        encrypted = CryptoJS.AES.encrypt(srcs, key, {           
                     mode: CryptoJS.mode.ECB,           
                     padding: CryptoJS.pad.Pkcs7       
                       });    
        } else if (typeof(word) == 'object') {//对象格式的转成json字符串        
          data = JSON.stringify(word);        
          var srcs = CryptoJS.enc.Utf8.parse(data);        
          encrypted = CryptoJS.AES.encrypt(srcs, key, {            
                mode: CryptoJS.mode.ECB,            
                padding: CryptoJS.pad.Pkcs7        
        })    }
        return encrypted.ciphertext.toString();
      }

注意:以上部分返回结果默认是经过base64编码,应与服务器协商做相应解码操作。

 export const decryptionWithObjects = (word,key) =>{ 
        var key = CryptoJS.enc.Utf8.parse(key);    
        var iv = CryptoJS.enc.Utf8.parse(key);    
        var encryptedHexStr = CryptoJS.enc.Hex.parse(word);    
        var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);    
        var decrypt = CryptoJS.AES.decrypt(srcs, key, {       
             mode: CryptoJS.mode.ECB,        
             padding: CryptoJS.pad.Pkcs7    
        });
       var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);return decryptedStr.toString();}
  • 如果是混合开发,建议网络部分走原生,即将路由,参数 发给原生,由原生的网络模块返回结果,再传递给RN。

你可能感兴趣的:(第四节:React Native加解密)