Reference-Request
OpenSSL PBKDF2 文件
我在 OSX Maverick 上使用 OpenSSL 0.9.8,我想使用 PBKDF,但在 OpenSSL 的網站上找不到任何文件/手冊。
我正在研究 QCA,它是 Qt 的 OpenSSL 包裝器,當我到達那裡時,它是
PKCS5_PBKDF2_HMAC_SHA1
PBKDF2,我在 OpenSSL 網站上也找不到這個功能。它在 OSX 上被標記為已棄用,所以我的問題是:OpenSSL 上是否有一個或多個 PBKDF2?如果有/有,有人知道我在哪裡可以找到文件嗎?
在 0.9.8 中只有 PKCS5_PBKDF2_HMAC_SHA1。
範例 C 程式碼:
#include <openssl/evp.h> #include <openssl/sha.h> void PBKDF2_HMAC_SHA_1nat(const char* pass, const unsigned char* salt, int32_t iterations, uint32_t outputBytes, char* hexResult) { unsigned int i; unsigned char digest[outputBytes]; PKCS5_PBKDF2_HMAC_SHA1(pass, strlen(pass), salt, strlen(salt), iterations, outputBytes, digest); for (i = 0; i < sizeof(digest); i++) sprintf(hexResult + (i * 2), "%02x", 255 & digest[i]); }
在 1.0.1 中還有 PKCS5_PBKDF2_HMAC,它允許傳入不同的底層雜湊函式。
PBKDF2-HMAC-SHA-512 的範例 C 程式碼:
#include <openssl/evp.h> #include <openssl/sha.h> void PBKDF2_HMAC_SHA_1(const char* pass, const unsigned char* salt, int32_t iterations, uint32_t outputBytes, char* hexResult) { unsigned int i; unsigned char digest[outputBytes]; PKCS5_PBKDF2_HMAC(pass, strlen(pass), salt, strlen(salt), iterations, EVP_sha512(), outputBytes, digest); for (i = 0; i < sizeof(digest); i++) sprintf(hexResult + (i * 2), "%02x", 255 & digest[i]); }