使用Crypto-JS进行加密解密的简单方法

摘要:文件众多,总结起来就2种,一个是核心文件core-min.js,其他的都是具体的某一种加密方法.使用时必须加载core-min.js,然后使用哪种加密解密就加载哪个加密文件,看名字就知道是什么加密,

Crypto-JS是一个javascript加密解密库,使用该库进行加密解密的在线工具如:https://tool.oschina.net/encrypt

这个库的用法比较简单,相关文件可以在上面的页面查看html找到,我也备份了:https://github.com/setycyas/WebTools/tree/gh-pages/libs/Crypto-JS

文件众多,总结起来就2种,一个是核心文件core-min.js,其他的都是具体的某一种加密方法.

使用时必须加载core-min.js,然后使用哪种加密解密就加载哪个加密文件,看名字就知道是什么加密,只有 tripledes.js比较特殊,包括DES与TripleDES两种加密解密.

加密函数的参数是:(明文字符串, 密码字符串),返回密文字符串.加密函数是:CryptoJS.AES.encrypt, CryptoJS.DES.encrypt,CryptoJS.Rabbit.encrypt,CryptoJS.RC4.encrypt,CryptoJS.TripleDES.encrypt

解密函数的参数是:(密文字符串, 密码字符串),返回的结果必须用.toString(CryptoJS.enc.Utf8)转为明文.解密函数是:CryptoJS.AES.decrypt, CryptoJS.DES.decrypt,CryptoJS.Rabbit.decrypt,CryptoJS.RC4.decrypt,CryptoJS.TripleDES.decrypt

我自制的函数举例:

/* 加密,解密函数,接受与输出都是utf-8 */
  /* 加密函数,参数为:明文,密码,加密类型,返回加密结果 */
  function encrypt(src, pw, encryptType){
    var encryptFunction;
    switch(encryptType.toLowerCase()){ 
      case "aes":
        encryptFunction = CryptoJS.AES.encrypt;
        break;
      case "des":
        encryptFunction = CryptoJS.DES.encrypt;
        break;
      case "rabbit":
        encryptFunction = CryptoJS.Rabbit.encrypt;
        break;
      case "rc4":
        encryptFunction = CryptoJS.RC4.encrypt;
        break;
      case "tripledes":
        encryptFunction = CryptoJS.TripleDES.encrypt;
        break;
    }
    return encryptFunction(src, pw);
  }
  
  /* 解密函数,参数: 密文,密码,解密类型,返回解密结果 */
  function decrypt(code, pw, decryptType){
    var decryptFunction;
    switch(decryptType.toLowerCase()){ 
      case "aes":
        decryptFunction = CryptoJS.AES.decrypt;
        break;
      case "des":
        decryptFunction = CryptoJS.DES.decrypt;
        break;
      case "rabbit":
        decryptFunction = CryptoJS.Rabbit.decrypt;
        break;
      case "rc4":
        decryptFunction = CryptoJS.RC4.decrypt;
        break;
      case "tripledes":
        decryptFunction = CryptoJS.TripleDES.decrypt;
        break;
    }
    return decryptFunction(code, pw).toString(CryptoJS.enc.Utf8);
  }

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_9195