web 加密——CryptoJs

791 阅读2分钟

web 加密——CryptoJs

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 13 天,点击查看活动详情

介绍

在前端,我们经常需要进行登录操作,但是我们进行登录操作的时候,如果明文进行传输,是非常不安全的一件事情,因此,为了提高安全性,我们需要对登录信息进行加密,这样,登录信息就变成了加密信息,当我们登录的时候,我们只需要将加密后的信息提价给后台,后台再进行解密,就可以得到原始的登录信息了。

加密方式——盐加密

盐加密是一种常用的加密方式,电话号码,邮箱等等都是使用盐加密来加密的。盐加密的原理是:在加密的时候,在加密的内容之前加上盐,盐是一个固定的内容,前后端统一的,前端用这个盐加密,后端使用这个盐解密。这样前后端就能保证获取到的数据是一致的。

加密库-CryptoJs

安装

使用 npm 安装 crypto-js

npm install  --save

使用 CDN

<script src="https://cdn.bootcdn.net/ajax/libs/crypto-js/4.1.1/aes.js"></script>

使用

  • MD5 加密 MD5 加密是一种广泛使用的散列函数。它常用于各种安全软件,也常用于检测文件的完成性。但是 MD5 不是抗冲突的,它不适合 SSL 证书或依赖此属性的数字签名等应用程序。

    let hash = CryptoJS.MD5("Message");
    
  • SHA-1 加密 SHA 哈希函数是美国国家安全局(NSA)设计。SHA-1 是现有 SHA 哈希函数当中最成熟的,它用于各种安全应用程序和协议。不过随着新攻击的发现或改进,SHA-1 的防御能力一直在减弱

    let hash = CryptoJS.SHA1("Message");
    
  • SHA-256 加密 SHA-256 是 SHA-2 的四个变体之一。它的安全性比 SHA-1 更好,但使用的广泛程度并没有 SHA-1 那么高。

    let hash = CryptoJS.SHA256("Message");
    

    ...还有很多加密方式,如果感兴趣可以访问crypto-js 官网

    使用

    //导入crypto-js
    import CryptoJS from "crypto-js";
    //将当前时间戳加密返回
    function cryptoJSEncryption(value) {
      //默认的 key,通过这个和传进来的value进行混合加密
      //这个就是盐加密当中的盐
      let defaultKey = CryptoJS.enc.Utf8.parse("SKDFHJSH454DSFJS");
      let valueEncryption = CryptoJS.enc.Utf8.parse(value);
      //将默认的 key 和value进行混合加密,.ciphertext.toString()将密文转成字符串,toUpperCase()将密文转成大写
      let ciphertext = CryptoJS.AES.encrypt(timeStamp, defaultKey, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7,
      })
        .ciphertext.toString()
        .toUpperCase();
      //将密文返回
      return ciphertext;
    }