我正在将Flask应用程序迁移到Node。我想在Node中生成与Python中相同的密码哈希值。但是,哈希不匹配。为什么结果不同?
import hashlib, binascii
salt = 'aa'
input_pwd = '1'
fromHex_salt = binascii.a2b_hex(salt)
dk = hashlib.pbkdf2_hmac('sha1', input_pwd.encode('utf-8'), fromHex_salt, 1000, dklen=32)
python_result = binascii.hexlify(dk).decode('utf-8')
const crypto = require('crypto');
const salt = 'aa';
const input_pwd = '1';
const js_result = crypto.pbkdf2Sync(input_pwd, salt, 1000, 32, 'sha1').toString('hex');
答案 0 :(得分:0)
您忘记在node.js中解码Hex中的salt:
const crypto = require('crypto');
const salt = 'aa';
const input_pwd = '1';
console.log(crypto.pbkdf2Sync(input_pwd, new Buffer(salt, 'hex'), 1000, 32, 'sha1').toString('hex'));