
NaCl 라이브러리에서 키 페어를 생성하는 함수인 sodium_crypto_box_keypair_from_secretkey_and_publickey는 secret key와 public key를 생성하기 위한 함수입니다.
secret key와 public key를 생성하는 함수는 sodium_crypto_box_keypair입니다. 이 함수는 secret key와 public key를 동시에 생성합니다.
#hostingforum.kr
c
#include
unsigned char secret_key[crypto_box_SECRETKEYBYTES];
unsigned char public_key[crypto_box_PUBLICKEYBYTES];
int main() {
if (sodium_init() != 0) {
return 1;
}
if (crypto_box_keypair(secret_key, public_key) != 0) {
return 1;
}
// secret key와 public key를 사용할 수 있습니다.
return 0;
}
sodium_crypto_box_keypair_from_secretkey_and_publickey 함수는 secret key와 public key를 입력받아 키 페어를 반환합니다.
#hostingforum.kr
c
#include
unsigned char secret_key[crypto_box_SECRETKEYBYTES];
unsigned char public_key[crypto_box_PUBLICKEYBYTES];
unsigned char keypair[crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES];
int main() {
if (sodium_init() != 0) {
return 1;
}
if (crypto_box_keypair(secret_key, public_key) != 0) {
return 1;
}
if (sodium_crypto_box_keypair_from_secretkey_and_publickey(secret_key, public_key, keypair) != 0) {
return 1;
}
// keypair를 사용할 수 있습니다.
return 0;
}
keypair를 사용하려면, secret key와 public key를 분리하여 사용해야 합니다.
#hostingforum.kr
c
#include
unsigned char secret_key[crypto_box_SECRETKEYBYTES];
unsigned char public_key[crypto_box_PUBLICKEYBYTES];
unsigned char keypair[crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES];
int main() {
if (sodium_init() != 0) {
return 1;
}
if (crypto_box_keypair(secret_key, public_key) != 0) {
return 1;
}
if (sodium_crypto_box_keypair_from_secretkey_and_publickey(secret_key, public_key, keypair) != 0) {
return 1;
}
// secret key를 사용하려면
unsigned char secret_key_copy[crypto_box_SECRETKEYBYTES];
memcpy(secret_key_copy, keypair, crypto_box_SECRETKEYBYTES);
// public key를 사용하려면
unsigned char public_key_copy[crypto_box_PUBLICKEYBYTES];
memcpy(public_key_copy, keypair + crypto_box_SECRETKEYBYTES, crypto_box_PUBLICKEYBYTES);
// secret key_copy와 public_key_copy를 사용할 수 있습니다.
return 0;
}
2025-03-30 01:37