SoW*_*oWa 9 javascript sha256 django-authentication pbkdf2
我有一个来自django的数据库,我想从Node.js使用它.我有一个任务:验证用户身份.从数据库中已知:算法pbkdf2_sha256,salt,10000次迭代和base64编码的哈希.我必须在JS中执行哪些步骤来将某些密码编码为给定的base64-hash?
UPD:在这里找到解决方案:python(django)hashlib vs Nodejs crypto 但是Django生成的hash和JS生成的hash不匹配...
Django生成下一个:
pbkdf2_sha256$10000$NmzpPCQiTe2R$U8ipSsOy3Xz7FwWDHdH/dTei8Xh4Q7NGtdzrCacSfvo=
Run Code Online (Sandbox Code Playgroud)
JS:
pbkdf2_sha256$10000$NmzpPCQiTe2R$w4jCgWjDilrDmcOBd8K+I8OdwpkKwoVQZMKWH3FvYcKoAMKcwqlewobDocOEGMKZfQ==
Run Code Online (Sandbox Code Playgroud)
密码: Simple123
通过使用pbkdf2-sha256(来自您自己的链接),我能够生成一个与Django相同的哈希值.
var pbkdf2 = require('pbkdf2-sha256');
var validatePassword = function (key, string) {
var parts = string.split('$');
var iterations = parts[1];
var salt = parts[2];
return pbkdf2(key, new Buffer(salt), iterations, 32).toString('base64') === parts[3];
};
var djangoPass = 'pbkdf2_sha256$10000$NmzpPCQiTe2R$U8ipSsOy3Xz7FwWDHdH/dTei8Xh4Q7NGtdzrCacSfvo=';
console.log(validatePassword('Simple123', djangoPass)); // Logs: true
Run Code Online (Sandbox Code Playgroud)
上面的代码应该足以使用Node验证存储在Django中的密码.
归档时间: |
|
查看次数: |
3918 次 |
最近记录: |