개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.30 01:37

NaCl 라이브러리에서 키 페어 생성에 대한 질문

목록
  • 레디스매니아 3일 전 2025.03.30 01:37
  • 2
    1
제가 공부하는 과정에서 NaCl 라이브러리에서 키 페어를 생성하는 함수인 sodium_crypto_box_keypair_from_secretkey_and_publickey를 사용하려고 합니다. 이 함수의 입력값으로 secret key와 public key를 받는데, 이 두 키를 어떻게 생성해야 하는지 궁금합니다.

secret key와 public key는 어떻게 생성하는지 알려주실 수 있을까요?

또한, 이 함수의 반환값으로 생성된 키 페어를 어떻게 사용해야 하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  3일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 8,230건 / 18 페이지

검색

게시물 검색