Вероятно, мне следует наконец опубликовать то, что я делал недавно, основываясь на этом же вопросе!
В моем репозитории Github , я скомпилировал тестовые векторы для
- PBKDF2-HMAC-SHA-512
- PBKDF2-HMAC-SHA-384
- PBKDF2-HMAC-SHA-256
- PBKDF2-HMAC-SHA-224
- PBKDF2-HMAC-SHA-1 И для сумасшедших, или для тех, кто с древними системами даже не поддерживает SHA-1:
- PBKDF2-HMAC-MD5
Испытания начались с RFC6070и в ответе @ChristianAichinger выше для PBKDF2-HMAC-SHA-256, и добавили еще несколько десятков для реализации более строгих тестов, таких как граничные условия для определенных размеров пароля и соли (15/16/17 байт, 63/ 64/65 байт, 127/128/129 байт, 1025 байт и т. Д.), Большое количество итераций, большое количество выходных размеров и т. Д. И т. Д.
Затем я собрал много экземпляров PBKDF2,и проверил эти тестовые векторы в отношении каждой крупной реализации, которую мне удалось найти (все также включаютd в вышеупомянутом репозитории, иногда включая исполняемые файлы Windows MinGW и обычно включая инструкции по компиляции Linux), включая
- Python (hashlib)
- Python (пользовательский код warner)
- C (OpenSSL)
- C (PolarSSL)
- C ++ (Cryptopp)
- .NET 4.5 (@ Jither's DeriveBytes)
- SQL Server (пользовательский код, PBKDF2-HMAC-SHA-1 и PBKDF2-HMAC-SHA-512 только сейчас)
Учитывая, что я вижу идентичные результаты в 7 реализациях с использованием 5 различных языков с использованием нескольких основных криптографических библиотек,Я чрезвычайно уверен, что тестовые векторы не только предоставлены точно, но и что реализованные реализации могут использоваться в качестве набора для проверки любого другого желаемого набора тестовых векторов.Если они все согласны, то это правильно.