Wie zu verwenden PKCS5_PBKDF2_HMAC_SHA1()

Ich versuche, mit PKCS5_PBKDF2_HMAC_SHA1() und unten ist mein Beispielprogramm. Ich wollte sicherstellen, dass, wenn mein Ergebnis PKCS5_PBKDF2_HMAC_SHA1() korrekt ist, so dass ich überprüft, das gleiche mit der website http://anandam.name/pbkdf2/ und ich sehe ein anderes Ergebnis. Verwende ich die API richtig?

Ich habe Zweifel, wenn ich bin vorbei an salt-Wert korrekt.

Habe ich eingefügt mein Ergebnis und website-führen nach dem Programm.

Bitte helfen Sie mir zu verstehen.

#include <stdio.h>     
#include <types.h> 
#include <string.h> 
#include <stdio.h> 
#include <stdlib.h> 

#include <malloc.h> 

#include <openssl/hmac.h> 
#include <openssl/evp.h> 
#include <openssl/engine.h> 
#include <openssl/aes.h>
#include <openssl/rand.h> 

#include <proto.h> 
#define KEY_LEN    32//32 bytes - 256 bits 
#define KEK_KEY_LEN   5 
#define ITERATION   1000 

unsigned char salt_value[KEY_LEN]; 
unsigned char AESkey[KEY_LEN]; 
unsigned char XTSkey[KEY_LEN]; 
u8 fuse_key[KEY_LEN]; 

void main() 
{ 
    s32 i=0; 
    s32 len =0; 
    u8 *out; 
    u8 *rspHMAC; 
    const s8 pwd[] = "test"; 
    s8 rspPKCS5[KEK_KEY_LEN * 2]; 
    s32 ret; 

    rspHMAC = (unsigned char *) malloc(sizeof(char) * KEY_LEN); 
    out = (unsigned char *) malloc(sizeof(char) * KEK_KEY_LEN); 

    RAND_bytes(salt_value, KEY_LEN); 

    printf("\n salt_value[0] = %x; salt_value[31]= %x", salt_value[0], salt_value[31]); 
    printf("\n strlen(salt_value) = %d; sizeof(salt_value) = %d\n", strlen(salt_value), sizeof(salt_value));  

    for(i = 0; i < KEY_LEN; i++) { 
        printf("%02x", salt_value[i]); 
    } 

    ret = PKCS5_PBKDF2_HMAC_SHA1(pwd, strlen(pwd), salt_value, strlen(salt_value), ITERATION, KEK_KEY_LEN, out); 
    printf("\n PKCS#5 :"); 

    for(len = 0; len < KEK_KEY_LEN; len++){ 
        printf("%02x", out[len]);

        sprintf(&rspPKCS5[len * 2], "%02x", out[len]); 
    } 

    printf("\n"); 
} 

Beispiel-Ausgabe:

salt_value[0] = e2; salt_value[31]= 12 
strlen(salt_value) = 32; sizeof(salt_value) = 32 
e258017933f3e629a4166cece78f3162a3b0b7edb2e94c93d76fe6c38198ea12 
PKCS#5 :7d7ec9f411 

Website Ergebnis:

The derived 40-bit key is: a5caf6a0d3 
Verwandte gibt es nun eine man-Seite für PKCS5_PBKDF2_HMAC und PKCS5_PBKDF2_HMAC_SHA1. Siehe PKCS5_PBKDF2_HMAC (3).

InformationsquelleAutor pkumarn | 2012-03-19

Schreibe einen Kommentar