我正在使用PBKDF2从我的应用程序中的密码字符串派生密钥,我只是有一些问题。
首先,我在线使用HMAC-SHA256等哈希看到了很多PBKDF2。它使用HMAC-SHA256而不仅仅是HMAC意味着什么?我以为HMAC用密钥加密数据。
其次,我读到有黑莓漏洞,因为它的PBKDF2功能只使用了一次迭代(而不是1000次)。一次迭代是否只是哈希密码(例如SHA256)。
由于
答案 0 :(得分:6)
是的,一次迭代与调用底层hmac函数大致相同。你不想这样做,它使得计算函数变得容易得多,因此更容易选择暴力密码。更多迭代使得该过程需要更长时间。
PBKDF2使用HMAC。然而,HMAC是使用任何散列函数的算法。您可以插入md5,sha1,sha2或其他任何内容。
答案 1 :(得分:2)
HMAC在内部使用哈希函数。它不加密数据;它只是使用密钥创建一个可验证的“签名”(消息验证码)。 HMAC-SHA256表示使用SHA256哈希函数的HMAC。您也可以使用HMAC-SHA1,HMAC-MD5或HMAC-WhateverHash。
是的,通过一次迭代,PBKDF2-HMAC-SHA256就像使用SHA256散列密码一样。你仍然有一个盐,哈希函数被调用两次(参见HMAC上的任何参考),但检查大量密码要快得多。