
	                	                 
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