
openssl_dh_compute_key 함수는 Diffie-Hellman 키 교환을 위한 공통 키를 계산하는 함수입니다. 이 함수는 두 개의 공개 키를 입력으로 받습니다. 공개 키는 DER(공격자 독립형 인코딩) 형식의 바이너리 데이터로 입력해야 합니다.
예를 들어, 다음은 OpenSSL 라이브러리를 사용하여 공개 키를 DER 형식으로 생성하고 openssl_dh_compute_key 함수를 호출하는 예제입니다.
#hostingforum.kr
c
#include
int main() {
// Diffie-Hellman 키 교환을 위한 공개 키 생성
DH *dh = DH_new();
if (!dh) {
return 1;
}
// 공개 키 생성
if (!DH_generate_key(dh)) {
return 1;
}
// DER 형식의 공개 키 생성
unsigned char *pub_key = malloc(dh->p_len + dh->g_len + 2);
if (!pub_key) {
return 1;
}
// DER 형식의 공개 키 생성
BN_bn2bin(dh->p, pub_key);
pub_key[dh->p_len] = 0x02; // DER 형식의 길이 표시
BN_bn2bin(dh->g, pub_key + dh->p_len + 1);
pub_key[dh->p_len + dh->g_len + 1] = 0x02; // DER 형식의 길이 표시
// openssl_dh_compute_key 함수 호출
unsigned char *common_key = malloc(dh->p_len);
if (!common_key) {
return 1;
}
if (!openssl_dh_compute_key(common_key, pub_key, dh->p_len + dh->g_len + 3, dh)) {
return 1;
}
// 공통 키 출력
printf("공통 키: ");
for (int i = 0; i < dh->p_len; i++) {
printf("%02x", common_key[i]);
}
printf("n");
// 메모리 해제
free(pub_key);
free(common_key);
DH_free(dh);
return 0;
}
이 예제에서는 OpenSSL 라이브러리를 사용하여 Diffie-Hellman 키 교환을 위한 공개 키를 생성하고 DER 형식으로 변환합니다. 그런 다음 openssl_dh_compute_key 함수를 호출하여 공통 키를 계산합니다. 계산된 공통 키는 DER 형식의 공개 키와 함께 전송되어 상대방이 공통 키를 계산할 수 있습니다.
2025-05-07 20:08