前端请求怎么加密才安全?

FSD-峻豪 阅读 3

我在做登录功能,想把用户密码加密后再发给后端,但不知道该在前端怎么处理。试过用 crypto-js 的 AES 加密,但每次加密结果都不一样,后端解不出来。

这是我的 Vue 代码,是不是哪里写错了?

<script setup>
import CryptoJS from 'crypto-js'

const login = () => {
  const password = '123456'
  const key = CryptoJS.enc.Utf8.parse('my-secret-key-123')
  const encrypted = CryptoJS.AES.encrypt(password, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  }).toString()
  console.log(encrypted) // 每次刷新页面结果都不同!
}
</script>
我来解答 赞 1 收藏
二维码
手机扫码查看
暂无解答
诸葛芳芳
你这个问题是用了ECB模式导致每次加密结果不一样,换成CBC模式并固定iv就行了。改这样:

const iv = CryptoJS.enc.Utf8.parse('1234567890123456')
const encrypted = CryptoJS.AES.encrypt(password, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString()


不过说真的,前端加密卵用不大,该用https的地方别省。
点赞
2026-03-06 06:01