簡體   English   中英

pbkdf2返回128個字符而不是64個字符的哈希

[英]pbkdf2 returns a hash with 128 characters instead of 64

我想在創建用戶時創建密碼哈希並將其存儲到我的數據庫中。 我的數據庫密碼列存儲的哈希值為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個字符長的哈希?

參數keylen (代碼段中的length )指定返回緩沖區中的字節數。 將此緩沖區轉換為hex字符串會使返回的字符串加倍,因為每個字節都由兩個字符表示。

如果要獲取64個字符的hex字符串,則必須設置length = 32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM