dew*_*wey 3 javascript cryptography pbkdf2 node.js cryptojs
我想在创建用户时创建密码哈希并将其存储到我的数据库中。我的数据库密码列存储的哈希值为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';
Run Code Online (Sandbox Code Playgroud)
当哈希用户纯文本密码时,我使用此功能
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;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,哈希函数返回具有128个字符的密码哈希。是否可以定义哈希长度,还是总是返回128个字符长的哈希?
参数keylen(length在您的代码段中)指定返回缓冲区中的字节数。将此缓冲区转换为hex字符串会使返回的字符串加倍,因为每个字节都由两个字符表示。
如果要获取hex64个字符的字符串,则必须设置length = 32。
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |