AES算法加密(crypto-js)

1、引入
  Node.js

    安装依赖: 

      npm install crypto-js

      npm install js-md5

  js引入:    

    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js" integrity="sha512-nOQuvD9nKirvxDdvQ9OMqe2dgapbPB7vYAMrzJihw5m+aNcf0dX53m6YxM4LgA9u8e9eg9QX+/+mPu8kCNpV2A==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js" integrity="sha512-eqbQu9UN8zs1GXYopZmnTFFtJxpZ03FHaBMoU3dwoKirgGRss9diYqVpecUgtqW2YRFkIVgkycGQV852cD46+w==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-zeropadding.min.js" integrity="sha512-txZjFJoDvbM8FJj9HuAHasxA/M76UjnMCXLHwuciIGDKUW9EB9PJVA6foG0vymuK9hu2gdpL60imO9VrTlEF7w==" crossorigin="anonymous"></script>
    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script>

2、使用示例:

  var CryptoJS require("crypto-js");

  var AES require("crypto-js/aes");

  function checkForm(){
    var timestamp=new Date().getTime().toString();
    var iv = makeIV(16);
    var userCode = '31580012';
    var md5Check=md5(userCode+timestamp);
    // aes 加密
    var str=''+userCode+','+timestamp
    var encryptText = encrypt(str,key);
    console.log("加密后:"+encryptText)
    // if(encryptText.length == 24){
      console.log(encryptText + "解密后:" + decrypt(encryptText,key,iv))
    // }

  }

  checkForm();

  //加密字符串长度

  function makeIV(length) {
    var result = '';
    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var charactersLength = characters.length;
    for ( var i = 0; i < length; i++ ) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
    } 
    return result;
  }

  // 加密
  function encrypt(data,key,iv) { //key,iv:16位的字符串
    var key1 =CryptoJS.enc.Utf8.parse(key);
    var encryptedStr = CryptoJS.AES.encrypt(data, key1,{
      mode : CryptoJS.mode.ECB,
      padding : CryptoJS.pad.Pkcs7
    }).ciphertext.toString();
    var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
    var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    return encryptedBase64Str
  }
  // 解密
  function decrypt(data,key,iv){ //key,iv:16位的字符串
    var key1 =CryptoJS.enc.Utf8.parse(key);
    var decrypted=CryptoJS.AES.decrypt(data,key1,{
      mode : CryptoJS.mode.ECB,
      padding : CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
  }

posted @ 2021-07-16 17:48  Linus_Liao  阅读(809)  评论(0)    收藏  举报