如何使用PKCS5_PBKDF2_HMAC_SHA1() [英] How to use PKCS5_PBKDF2_HMAC_SHA1()
本文介绍了如何使用PKCS5_PBKDF2_HMAC_SHA1()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用PKCS5_PBKDF2_HMAC_SHA1()
,下面是我的示例程序.我想确定PKCS5_PBKDF2_HMAC_SHA1()
的结果是否正确,所以我在网站,我看到了不同的结果.我是否正确使用API?
I am trying to use PKCS5_PBKDF2_HMAC_SHA1()
and below is my sample program. I wanted to make sure if my result of PKCS5_PBKDF2_HMAC_SHA1()
is correct so I verified the same with the website http://anandam.name/pbkdf2/ and I see a different result. Am I using the API correctly?
我怀疑我是否正确传递了盐值.
I am having doubts if I am passing salt value correctly.
我在程序之后粘贴了我的结果和网站结果.
I have pasted my result and website result after the program.
请帮助我理解这一点.
#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");
}
示例输出:
salt_value[0] = e2; salt_value[31]= 12
strlen(salt_value) = 32; sizeof(salt_value) = 32
e258017933f3e629a4166cece78f3162a3b0b7edb2e94c93d76fe6c38198ea12
PKCS#5 :7d7ec9f411
网站结果:
The derived 40-bit key is: a5caf6a0d3
推荐答案
查看全文