개발자 Q&A

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

2025.06.07 20:35

NaCl 라이브러리에서 KeyPair 생성에 대한 질문

목록
  • 제로데이헌터 오래 전 2025.06.07 20:35 인기
  • 298
    1
저는 NaCl 라이브러리에서 키 페어를 생성할 때 사용하는 함수인 sodium_crypto_box_keypair_from_secretkey_and_publickey에 대해 질문을 드립니다.

저는 공개 키와 비밀 키를 각각 하나씩 생성한 후, sodium_crypto_box_keypair_from_secretkey_and_publickey 함수를 사용하여 키 페어를 생성하려고 합니다.
하지만, 이 함수의 사용법에 대해 이해가 안 가고 있습니다.
이 함수는 두 개의 키를 입력받아 키 페어를 생성하는 함수로, 공개 키와 비밀 키를 각각 하나씩 생성한 후, 이 함수를 사용하여 키 페어를 생성할 수 있습니다.

하지만, 이 함수의 입력 파라미터인 secretkey와 publickey의 길이를 어떻게 설정해야 하는지, 그리고 이 함수가 반환하는 키 페어의 형식에 대해 궁금합니다.
secretkey와 publickey의 길이는 어떻게 설정해야 하는지, 그리고 이 함수가 반환하는 키 페어의 형식은 무엇인지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    sodium_crypto_box_keypair_from_secretkey_and_publickey 함수는 두 개의 키를 입력받아 키 페어를 생성하는 함수입니다.

    이 함수의 입력 파라미터인 secretkey와 publickey의 길이는 32바이트로 설정해야 합니다.

    secretkey는 32바이트의 난수값으로 생성해야 하며, publickey는 secretkey를 통해 계산된 공개 키입니다.

    이 함수가 반환하는 키 페어는 두 개의 키를 포함합니다. 첫 번째 키는 공개 키이고, 두 번째 키는 비밀 키입니다.

    이 두 개의 키는 모두 32바이트의 바이너리 데이터로 반환됩니다.

    예를 들어, 다음과 같이 secretkey와 publickey를 생성하고, sodium_crypto_box_keypair_from_secretkey_and_publickey 함수를 사용하여 키 페어를 생성할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        unsigned char secretkey[32];
    
        unsigned char publickey[32];
    
        unsigned char keypair[64];
    
    
    
        // secretkey와 publickey를 생성합니다.
    
        randombytes_secretkey(secretkey, 32);
    
        publickey[0] = 0; // publickey는 secretkey를 통해 계산된 공개 키입니다.
    
        crypto_box_publickey_from_secretkey(publickey, secretkey);
    
    
    
        // sodium_crypto_box_keypair_from_secretkey_and_publickey 함수를 사용하여 키 페어를 생성합니다.
    
        if (sodium_crypto_box_keypair_from_secretkey_and_publickey(keypair, secretkey, publickey) != 0) {
    
            printf("Error: %sn", sodium_strerror(errno));
    
            return 1;
    
        }
    
    
    
        // 키 페어를 출력합니다.
    
        printf("공개 키: ");
    
        for (int i = 0; i < 32; i++) {
    
            printf("%02x", keypair[i]);
    
        }
    
        printf("n");
    
        printf("비밀 키: ");
    
        for (int i = 32; i < 64; i++) {
    
            printf("%02x", keypair[i]);
    
        }
    
        printf("n");
    
    
    
        return 0;
    
    }
    
    


    이 예제에서는 secretkey와 publickey를 생성하고, sodium_crypto_box_keypair_from_secretkey_and_publickey 함수를 사용하여 키 페어를 생성합니다. 키 페어는 두 개의 키를 포함하며, 첫 번째 키는 공개 키이고, 두 번째 키는 비밀 키입니다.

    2025-06-07 20:36

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

검색

게시물 검색