为了账号安全,请及时绑定邮箱和手机立即绑定

pbkdf2 返回 128 个字符而不是 64 个字符的散列

pbkdf2 返回 128 个字符而不是 64 个字符的散列

森栏 2021-10-14 15:42:29
我想在创建用户时创建密码哈希并将它们存储到我的数据库中。我的数据库密码列存储 64 个字符 ( nvarchar(64)) 的哈希值。我的哈希配置:const byteAmount: number = Number(process.env.BYTE_AMOUNT) || 16;const iterations: number = Number(process.env.ITERATIONS) || 100;const length: number = Number(process.env.LENGTH) || 64;const algorithm: string = process.env.ALGORITHM || 'sha512';const conversion: string = process.env.CONVERSION || 'Hex';散列用户纯文本密码时,我使用此功能public hashPassword = (password: BinaryLike, passwordSalt: BinaryLike): string => {    const { iterations, length, algorithm }: { iterations: number, length: number, algorithm: string } = passwordConfig;    const passwordHash: string = pbkdf2Sync(password, passwordSalt, iterations, length, algorithm).toString(passwordConfig.conversion);    return passwordHash;}不幸的是,哈希函数返回一个 128 个字符的密码哈希。是否可以定义散列长度,还是总是返回 128 个字符长的散列?
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

参数keylenlength在您的代码段中)指定返回缓冲区中的字节数。将此缓冲区转换为hex字符串会使返回的字符串加倍,因为每个字节由两个字符表示。

如果要获取hex64 个字符的字符串,则必须设置length = 32.



查看完整回答
反对 回复 2021-10-14
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信