前端用 CryptoJS 做 SHA256 摘要,为什么每次结果都不一样?
我在登录页用 CryptoJS 对用户密码做 SHA256 摘要再传给后端,但发现每次输入相同密码,生成的哈希值都不一样。是不是我用法有问题?
我直接这样调的:CryptoJS.SHA256(password),查了文档好像没错啊,但结果就是不稳定。
import CryptoJS from 'crypto-js';
function hashPassword(pwd) {
return CryptoJS.SHA256(pwd).toString();
}
console.log(hashPassword('123456')); // 每次刷新页面结果都不同?!
你先试试直接这样跑:
如果这三次输出不一样,那才是见鬼了。
问题大概率不在 SHA256 本身,而是你传进去的 password 本身每次就不一样。你可以打个日志看看:
常见坑:用户输入前后有空格、换行符,或者你从表单取值时不知不觉带上了什么东西。
还有一个可能——你确定每次输入的密码真的一样?有些浏览器会自动填充密码,可能第一次你手动输入,第二次从自动填充里取,值会有差异。
先排查传入的值是不是真的一样,这个才是根因。