4
이 diffie hellman 교환 예제를 수행 할 때 내 키가 동일하지 않은 이유를 알 수 없습니다. C (openssl/dh.h)에서 openssl 라이브러리를 사용하고 있습니다.왜 OpenSSL diffie hellman을 사용하여 키가 동일하지 않습니까?
아주 단순 해 보이지만 어떤 이유로 키가 동일하지 않습니다. 내가 뭘 놓치고 있니?
아이디어가 있으십니까? 감사!
void hexprint(unsigned char *printBuf, int len)
{
int i;
for(i = 0; i < len; i++)
{
printf("%x ", printBuf[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
srand(time(NULL));
DH *dh1;
DH *dh2;
unsigned char *dh_secret1;
unsigned char *dh_secret2;
dh1 = DH_generate_parameters(256, 2, NULL, NULL);
dh2 = DH_generate_parameters(256, 2, NULL, NULL);
DH_generate_key(dh1);
DH_generate_key(dh2);
dh_secret1 = malloc(DH_size(dh1));
memset(dh_secret1, 0, DH_size(dh1));
dh_secret2 = malloc(DH_size(dh2));
memset(dh_secret2, 0, DH_size(dh2));
DH_compute_key(dh_secret1, dh2->pub_key, dh1);
DH_compute_key(dh_secret2, dh1->pub_key, dh2);
printf("Secret Key 1: \n");
hexprint(dh_secret1, 32);
printf("Secret Key 2: \n");
hexprint(dh_secret2, 32);
free(dh_secret1);
free(dh_secret2);
DH_free(dh1);
DH_free(dh2);
}
일반적으로 교환을 수행해야합니다. 그러면 키 유도와 공개 키가 실제로 다른지 확인하는 검사가 수행됩니다. –