我有一个JavaScript应用程序和一个Python应用程序,它们使用pbdkf2从密码派生的密钥进行通信。问题是,生成的密钥不匹配。我为每一个都生成了一个最小的测试用例。在
Python
import hashlib, binascii
bytes = hashlib.pbkdf2_hmac('sha256', "password".encode(), b'', 100000)
print(binascii.hexlify(bytes).decode())
生成:64a868d4b23af696d3734d0b814d04cdd1ac280128e97653a05f32b49c13a29a
JavaScript
^{2}$生成:41c04f824d843d5be0ae66b3f621d3f05db7d47e7c46ee0e9171b5cbff7f3631
我现在经常挠头。我认为b''
和{
你查过了吗
给出正确的结果?在
从docs可以看出,如果没有显式地给SJCL一个PRF,那么它的PBKDF2实现默认为HMAC-SHA256。如果更改修复了该错误,则
hmacSHA256
包装可能有问题。在另外,我不确定将空salt指定为
[0]
是否真的有效(或者在将来的版本中保证可以工作,因为SJCL的位数组的格式是explicitly subject to change),但是""
肯定应该起作用。在相关问题 更多 >
编程相关推荐