javascript - Python (django) 和 Javascript (crypto.js) 中的 PBKDF2 哈希值不一致

标签 javascript python django encryption cryptography

Django 代码:

hasher = PBKDF2PasswordHasher()
print hasher.encode(u'qwerty', u'qwerty', iterations=1).split('$')[3]
# T9t/EJXFpPs2Lhca7IVGphTC/OdEloPMHw1UhDnXcyQ=
# hex: 4fdb7f1095c5a4fb362e171aec8546a614c2fce7449683cc1f0d548439d77324

Javascript代码:

var key = CryptoJS.PBKDF2('qwerty', 'qwerty', { iterations: 1, keySize: 256/32 });
console.log(key.toString(CryptoJS.enc.Base64));
// vfBGfG30ahsx6QWs9vrdTGV+wmlg1d5f2+5bFnP5SAU=
// hex: bdf0467c6df46a1b31e905acf6fadd4c657ec26960d5de5fdbee5b1673f94805

最佳答案

我没有在 JS 中指定正确的哈希器。 CryptoJS 的默认值是 SHA1 哈希器,Django 的默认值是 SHA526 哈希器。

CryptoJS.PBKDF2('qwerty', 'qwerty', { iterations: 1, keySize: 256/32, hasher: CryptoJS.algo.SHA256 });

解决问题

关于javascript - Python (django) 和 Javascript (crypto.js) 中的 PBKDF2 哈希值不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23417159/

相关文章:

Python:如何从另一个模块调用方法?

python - 脚本在 IDLE 中工作,但 .py 文件不工作

python - 使用 django.auth 时 Django 1.9.1 NoReverseMatch

javascript - Qt WebKit 和 HTML5 地理定位

javascript - 如何在 Javascript 对象(类)中使用 setter 和 getter?

javascript - 根据条件对 html 组件进行 jsx 循环包装

mysql - Django 按年、月、日、时、分过滤日期时间

javascript - 从 ironRequest promise 中检索状态代码

Python:如何加载一个模块两次?

python - 如何在 django 1.5 中使用 django_tables2 在基于模型的表中添加 2 个额外的 LinkColumns