vue(mpvue)前端登录密码使用AES加密引出的一系列问题

一般来说,都是md5加密密码。但是我司后台,用的是aes家秘密,然后还有密匙之类的。

折腾了老半天,总算解决了。

记录一下。

AES加密,js有一个牛逼的算法库,crypto-js。

封装成工具函数,在使用的地方引用。

// 密码加密
// const CryptoJS = require ('crypto-js')
import CryptoJS from 'crypto-js'
const key = CryptoJS.enc.Utf8.parse('abcdefrt69845632') // 密匙
const iv = CryptoJS.enc.Utf8.parse('2516325478965124') // 偏移量
// 解密方法
// function Decrypt (word) {
//   let encryptedHexStr = CryptoJS.enc.Hex.parse(word)
//   let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
//   let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
//   let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
//   return decryptedStr.toString()
// }

// 加密方法
export function Encrypt (word) {
  let srcs = CryptoJS.enc.Utf8.parse(word)
  let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
  return encrypted.toString()
  // return encrypted.ciphertext.toString()
}

我司,采用的是 CBC模式,密匙和偏移量,与后台确定,都是16位的。

如果加密后的密文,需要16进制返回的,使用 return encrypted.ciphertext.toString()
我司,使用的是base64格式的, 使用直接使用 return encrypted.toString()

这个破地方,我试了好久,才找到正确的。不提了,心塞。

猜你喜欢

转载自blog.csdn.net/qq_42991509/article/details/107714360