Tôi đang cố sử dụng PKCS5_PBKDF2_HMAC_SHA1()
trở xuống là chương trình mẫu của mình. Tôi muốn đảm bảo rằng kết quả của tôi là PKCS5_PBKDF2_HMAC_SHA1()
là chính xác vì vậy tôi đã xác minh tương tự với trang web http://anandam.name/pbkdf2/ và tôi thấy một kết quả khác. Tôi có đang sử dụng API chính xác không?Cách sử dụng PKCS5_PBKDF2_HMAC_SHA1()
Tôi có nghi ngờ nếu tôi chuyển giá trị muối chính xác.
Tôi đã dán kết quả và kết quả trang web của mình sau chương trình.
Hãy giúp tôi hiểu điều này.
#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");
}
Sample Output:
salt_value[0] = e2; salt_value[31]= 12
strlen(salt_value) = 32; sizeof(salt_value) = 32
e258017933f3e629a4166cece78f3162a3b0b7edb2e94c93d76fe6c38198ea12
PKCS#5 :7d7ec9f411
Trang kết quả:
The derived 40-bit key is: a5caf6a0d3
liên quan, bây giờ có một người đàn ông trang cho 'PKCS5_PBKDF2_HMAC' và 'PKCS5_PBKDF2_HMAC_SHA1'. Xem ['PKCS5_PBKDF2_HMAC (3)'] (https://www.openssl.org/docs/crypto/PKCS5_PBKDF2_HMAC.html). – jww