crypto-js请求加密库

Posted on 2020-05-19 18:32  张雪冬前端学习园地  阅读(425)  评论(0编辑  收藏  举报

crypto-js请求加密库

 

 

1.介绍:项目中会有y一些敏感请求的参数,比如用户的登陆信息,还有注册信息就应该对参数进行加密,否则很容易被黑客盗取

// 安装

npm install crypto-js


// utils新建一个js文件,内容如下

export default {

  // 加密
  encrypt (word, keyStr) {

    if (!word) return

    // 没有传递秘钥就使用默认的秘钥,秘钥的数量不能低于16位字符或者数字组成的
    keyStr = keyStr || 'hanxiaojinggvage'

    // 如果要加密的参数是对象类型,需要转换成字符串
    if (typeof word === 'object') {
      word = JSON.stringify(word)
    }

    // 字符串类型的秘钥或者参数必须先pase以下
    const key = CryptoJS.enc.Utf8.parse(keyStr)
    const srcs = CryptoJS.enc.Utf8.parse(word)

    // 开始加密,第一个参数是要加密的参数,第二个参数是加密的秘钥,第三个参数是加密配置
    const encrypted = CryptoJS.AES.encrypt(srcs, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    })

    // 由于CryptoJS生成的密文是一个对象,转为字符串才是后端需要的格式

    return encrypted.toString()
  },


   // 解密
  decrypt (word, keyStr) {

    if (!word) return

    keyStr = keyStr || 'hanxiaojinggvage'

    const key = CryptoJS.enc.Utf8.parse(keyStr)

    // 开始解密
    const decrypt = CryptoJS.AES.decrypt(word, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    })

    // 如果是对象类型的参数,那么就转成对象,否则原样返回
    try {

      return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt).toString())
    } catch (error) {

      return CryptoJS.enc.Utf8.stringify(decrypt).toString()
    }
  } 
}