PKCS5_PBKDF2_HMAC 哈希函数会导致 < 或 > 等特殊符号出现问题吗?

can PKCS5_PBKDF2_HMAC hashing function cause an issue with special symbols like < or >?

当使用 < 或 > 等特殊符号时,PKCS5_PBKDF2_HMAC 散列函数似乎会失败。使用此类字符时,它无法给出正确的哈希值。这个函数是不是设计成不能处理特殊字符?

Is it like the function is designed not to work with special characters?

没有。 PBKDF2 is a wrapper around HMAC,它是一个wrapper around XOR and a hashing algorithm。 PBKDF2 及其依赖项只不过是常规数学运算,或多或少地在二进制级别运行。您可以输入任何您想要的十六进制值,它会正常运行。

现在,您的代码可能在调用 PBKDF2 之前的转换中做了一些奇怪的事情,或者您使用的任何软件和中间件以及前端可能有问题。

测试:

  • 打印出您要散列的内容的十六进制编码二进制转换以及盐。检查这个。
  • 如果尖括号特别是一个问题,您是否有 XML and/or HTML 在人类输入数据和您的 PBKDF2 函数之间的路径中的任何地方涉及
  • 我有 several independent PBKDF2 implementations at my Github repository, and in particular I've just finished upgrading the OpenSSL library 版本支持多种输入和输出编码。
    • 针对其中几个实现测试十六进制编码的哈希和十六进制编码的 salt。
    • 根据您的代码从头到尾测试上述存储库中的测试向量。
    • 针对尽可能接近裸机 PBKDF2 实现的上述存储库中的测试向量进行测试,尽可能跳过所有其他代码。