前端常用加密算法

  • MD5加密(无解密方法,解密不可逆)

    适用场景:

    用户注册完成后,将加密后的密码发送给后端,后端将加密后的密码存储在数据库中,当用户登录时,前端依然发送加密后的密码,后台对比数据库中存储的密码和前端发送的密码。

    安装依赖:

    npm install crypto --save
    

    使用方法:

    import crypto from 'crypto'  //引入依赖
    
    //使用示例
    let password = '123456'
    const md5 = crypto.createHash('md5')
    md5.update(password)
    let md5password = md5.digest('hex')  //md5password为加密后的内容,可直接传递给后端
    
  • AES加解密

    适用场景:

    网站注册时,如果注册过程分两步进行,第一步校验手机号,校验通过后,跳转到其他界面,填写其他注册信息,完成注册。如果第三方通过伪造返回信息,可以欺骗前端,非法注册如果要解决非法注册的问题,那么需要前后端双重校验,前后端都需要涉及到加密和解密,所以可以使用AES加解密。

    安装依赖:

    npm install crypto-js
    

    使用方法:

    新建CryptoJS.js文件,并添加以下内容

    //封装加解密方法
    import CryptoJS from "crypto-js";
    /**
      * 
      * 第一个参数word是待加密或者解密的字符串;
      * 第二个参数keyStr是aes加密需要用到的16位字符串的key,keyStr 的长度要不小于14位,否则解密时会显示空白;
      * 
      * 如果想对一个js对象加密,需要先把该对象转成json字符串。 
      */
    export default {
      // 加密
      encrypt(word, keyStr) {
        keyStr = keyStr ? keyStr : "21ssadad23223123dsaddas";
        let key = CryptoJS.enc.Utf8.parse(keyStr);
        let srcs = CryptoJS.enc.Utf8.parse(word);
        let encrypted = CryptoJS.AES.encrypt(srcs, key, {
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7
        });
        return encrypted.toString();
      },
      // 解密
      decrypt(word, keyStr) {
        keyStr = keyStr ? keyStr : "21ssadad23223123dsaddas";
        var key = CryptoJS.enc.Utf8.parse(keyStr);
        var decrypt = CryptoJS.AES.decrypt(word, key, {
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7
        });
        return CryptoJS.enc.Utf8.stringify(decrypt).toString();
      }
    };
    

    引用CryptoJS.js文件,实现加解密

    import CryptoJS from './xx/CryptoJS'
    // ...
    let a = CryptoJS.encrypt("asdfg123456") //使用默认密钥加密asdfg123456
    let b = CryptoJS.decrypt(a)
    console.log(a);  //加密后数据
    console.log(b);  //解密后数据
    
    
发布了58 篇原创文章 · 获赞 85 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/codezha/article/details/103371988