Reference-Request

OpenSSL PBKDF2 文件

  • March 4, 2014

我在 OSX Maverick 上使用 OpenSSL 0.9.8,我想使用 PBKDF,但在 OpenSSL 的網站上找不到任何文件/手冊。

我正在研究 QCA,它是 Qt 的 OpenSSL 包裝器,當我到達那裡時,它是PKCS5_PBKDF2_HMAC_SHA1PBKDF2,我在 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]);
}

引用自:https://crypto.stackexchange.com/questions/12337