
sodium_crypto_sign_publickey 함수는 Ed25519 알고리즘의 공개 키를 32바이트의 바이너리 데이터로 반환합니다. 이 값을 BASE64 URL_SAFE 인코딩으로 변환하려면, 먼저 바이너리 데이터를 문자열로 변환한 후, URL_SAFE 인코딩을 적용하는 과정을 거칩니다.
다음은 예제 코드입니다.
#hostingforum.kr
c
#include
#include
// Ed25519 알고리즘의 개인 키를 생성합니다.
unsigned char private_key[32];
sodium_init();
randombytes_private_key(private_key, sizeof(private_key));
// Ed25519 알고리즘의 공개 키를 생성합니다.
unsigned char public_key[32];
sodium_crypto_sign_publickey(private_key, public_key);
// 바이너리 데이터를 문자열로 변환합니다.
char encoded_key[64];
base64_encode(public_key, sizeof(public_key), encoded_key, sizeof(encoded_key));
// URL_SAFE 인코딩을 적용합니다.
char url_safe_key[64];
for (int i = 0; i < sizeof(encoded_key); i++) {
if (encoded_key[i] == '+') {
url_safe_key[i] = '-';
} else if (encoded_key[i] == '/') {
url_safe_key[i] = '_';
} else {
url_safe_key[i] = encoded_key[i];
}
}
// JSON 객체에 포함시키기
char json[128];
snprintf(json, sizeof(json), "{"public_key":"%s"}", url_safe_key);
이 예제 코드는 Ed25519 알고리즘의 개인 키를 생성하고, 이를 사용하여 공개 키를 생성합니다. 다음으로, 바이너리 데이터를 문자열로 변환하고, URL_SAFE 인코딩을 적용합니다. 마지막으로, JSON 객체에 포함시키는 과정을 보여줍니다.
2025-03-03 01:20