Crypto加密解密

包含算法种类:MD5算法/sha1算法、base64加密和解密、Hmac、AES、Diffie-Hellman

  • AES:常用的对称加密算法,加密解密都用一个秘钥,需要自己封装函数

  • MD5算法:常用的哈希算法,用于给任意数据一个"签名"

  • sha1算法:哈希加密,对强行攻击的强度更大,但是循环步骤比MD5多,处理的缓存大,所以相同硬件下,运行速度比MD5慢

  • Hmac:哈希算法,可以利用MD5和sha1等哈希算法,但是额外需要一个秘钥,可以理解为用随机数'增强’的哈希算法

  • Diffie-Hellman:一种密钥交换协议,在双方不泄露密钥的情况下协商出一个密钥

主要总结AES算法

  • 引入到crypto.js

    npm install crypto-js
    
    import CryptoJS from 'crypto-js/crypto-js'
    
  • 加密

    import CryptoJS from 'crypto-js'
    export const encrypt = (word,key) => {
      var key = CryptoJS.enc.Utf8.parse(key);
      var srcs = CryptoJS.enc.Utf8.parse(word);
      var encrypted = CryptoJS.AES.encrypt(srcs, key, {
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7 // 后台用的是pad.Pkcs5,前台对应为Pkcs7
      });
     return encrypted.toString();
    

    }

  • 解密

     export const decrypt = (word,key) => {
     var key = CryptoJS.enc.Utf8.parse(key);
     var decrypt = CryptoJS.AES.decrypt(word, key, {
       mode: CryptoJS.mode.ECB,
       padding: CryptoJS.pad.Pkcs7
     });
     return CryptoJS.enc.Utf8.stringify(decrypt).toString();
     }
    

例如

  • 请求头使用加密,需与后台商量

    import Crypto from './crypto';
    headersConfig = {
      'sign': escape(Crypto.encryptByDES("jU7dDd0+68" + new Date().getTime(), "k8!MZms@")),
      'ver': '1.0.6',
      'os': 'web',
      'Content-Type': 'application/json'
    }  
    
  • Tip

    escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
    unescape() 函数可对通过 escape() 编码的字符串进行解码。
    JS内置全局函数

你可能感兴趣的:(Crypto加密解密)