개발자 Q&A

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

2025.06.17 22:14

Sodium 라이브러리에서 crypto_generichash_update 함수 이해를 도와주세요.

목록
  • 코드마스터 오래 전 2025.06.17 22:14
  • 52
    1
저는 현재 Sodium 라이브러리에서 암호화 함수인 crypto_generichash_update를 사용하고 있습니다.
이 함수는 crypto_generichash_start에 의해 초기화된 메모리 블록에 데이터를 추가하여 해시 값을 업데이트하는 역할을 합니다.
하지만, 이 함수의 사용법과 구현에 대해 약간의 혼란을 느끼고 있습니다.
crypto_generichash_update 함수를 사용하여 해시 값을 업데이트하는 순서는 어떻게 되는지 알려주세요.
또한, 이 함수의 출력은 어떤 형식을 취하는지 궁금합니다.
해시 값을 업데이트한 후, 어떻게 해야 하는지 알려주세요.

그리고, crypto_generichash_update 함수를 사용할 때, 메모리 블록의 크기는 어떻게 설정해야 하는지 알려주세요.
메모리 블록의 크기가 너무 작다면, 어떻게 해야 하는지 알려주세요.
또한, 메모리 블록의 크기가 너무 크다면, 어떻게 해야 하는지 알려주세요.
해시 값을 업데이트한 후, 메모리 블록을 초기화해야 하는지 알려주세요.
그리고, 메모리 블록을 초기화하는 방법은 무엇인지 알려주세요.

도움이 필요합니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    crypto_generichash_update 함수는 crypto_generichash_start 함수에 의해 초기화된 메모리 블록에 데이터를 추가하여 해시 값을 업데이트하는 역할을 합니다.

    해시 값을 업데이트하는 순서는 다음과 같습니다.

    1. crypto_generichash_start 함수를 사용하여 메모리 블록을 초기화합니다.
    2. 메모리 블록에 데이터를 추가합니다.
    3. crypto_generichash_update 함수를 사용하여 메모리 블록에 데이터를 추가합니다.
    4. crypto_generichash_finalize 함수를 사용하여 메모리 블록에 저장된 해시 값을 얻습니다.

    crypto_generichash_update 함수의 출력은 메모리 블록에 저장된 해시 값이 아닌, 메모리 블록에 저장된 해시 값을 업데이트한 메모리 블록 자체입니다.

    해시 값을 업데이트한 후, 메모리 블록을 초기화해야 합니다. 메모리 블록을 초기화하는 방법은 다음과 같습니다.

    1. 메모리 블록의 내용을 모두 0으로 초기화합니다.
    2. crypto_generichash_start 함수를 사용하여 메모리 블록을 초기화합니다.

    메모리 블록의 크기는 64바이트 이상이어야 합니다. 메모리 블록의 크기가 너무 작다면, 메모리 블록의 크기를 64바이트 이상으로 설정해야 합니다. 메모리 블록의 크기가 너무 크다면, 메모리 블록의 크기를 64바이트 이상으로 설정해야 합니다.

    예를 들어, 메모리 블록의 크기를 128바이트로 설정한 경우, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    unsigned char hash[128];
    
    crypto_generichash_start(hash, 128);
    
    crypto_generichash_update(hash, "Hello, World!", 13);
    
    crypto_generichash_finalize(hash);
    
    


    메모리 블록의 크기를 64바이트로 설정한 경우, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    unsigned char hash[64];
    
    crypto_generichash_start(hash, 64);
    
    crypto_generichash_update(hash, "Hello, World!", 13);
    
    crypto_generichash_finalize(hash);
    
    


    메모리 블록의 크기를 256바이트로 설정한 경우, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    unsigned char hash[256];
    
    crypto_generichash_start(hash, 256);
    
    crypto_generichash_update(hash, "Hello, World!", 13);
    
    crypto_generichash_finalize(hash);
    
    

    2025-06-17 22:15

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

검색

게시물 검색