You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular中使用BCrypt/Bcryptjs并验证密码是否已哈希?

BCrypt密码加密调试与校验方案

打印哈希后的密码

你现有代码中注释的加密逻辑是可用的,只需放开注释后新增console.log输出哈希结果即可,修改后的onSubmit方法代码如下:

onSubmit(v: NgForm) {
  console.log(v.value, v.valid);
  console.log('原始明文密码:', this.val.password);

  // 生成盐值+哈希加密
  const salt = bcrypt.genSaltSync(10);
  const hashedPassword = bcrypt.hashSync(this.val.password, salt);
  // 打印哈希后的密码
  console.log('哈希后的密码:', hashedPassword);
}

运行代码提交表单后,即可在浏览器控制台看到对应的哈希值。

校验密码哈希状态

你可以通过两种方式校验密码是否完成哈希处理:

  • 格式快速校验:标准BCrypt哈希结果固定为60位字符串,且以$2a$、$2b$、$2y$这类前缀开头,你可以直接判断输出结果的格式是否符合特征,示例判断代码:
const isBcryptHash = /^\$2[ayb]\$.{56}$/.test(hashedPassword);
console.log('是否为合法BCrypt哈希:', isBcryptHash);
  • 明文比对校验:调用bcrypt自带的比对方法,传入明文密码和哈希结果,判断两者是否匹配,这是最准确的校验方式:
const isMatch = bcrypt.compareSync(this.val.password, hashedPassword);
console.log('明文与哈希值是否匹配:', isMatch); // 加密正确的话会返回true

注意事项

如果仅为课程作业要求,前端加密满足需求即可,生产环境下密码加密必须在服务端完成,避免前端加密逻辑被篡改导致安全问题。

内容的提问来源于stack exchange,提问作者SED

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:36:03