개발자 Q&A

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

2025.05.05 22:34

Sodium_crypto_aead_aes256gcm_keygen 함수의 사용 방법에 대해 도움을 부탁드립니다.

목록
  • UI컴포넌트장인 27일 전 2025.05.05 22:34
  • 80
    1
제가 공부하는 과에선 cryptographic library인 Sodium를 사용해야 하는데, 함수 sodium_crypto_aead_aes256gcm_keygen의 사용 방법을 찾고 있습니다. 이 함수는 AES-256-GCM 방식의 암호화를 지원한다고 합니다.

이 함수의 인자로 key와 nonce를 입력해야 하는데, key는 32바이트의 암호화 키를 입력해야 한다고 들었습니다. nonce는 12바이트의 난수 값을 입력해야 한다고 하네요.

여기서 궁금한 점이 있습니다. nonce의 난수 값을 어떻게 생성해야 하는지 알려주세요.

그리고 이 함수를 사용할 때, plaintext가 16바이트 이하일 때 어떻게 처리해야 하는지 알려주세요.

또한, ciphertext의 길이를 어떻게 계산해야 하는지 알려주세요.

위의 내용에 대해 자세한 정보를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  27일 전



    sodium_crypto_aead_aes256gcm_keygen 함수는 AES-256-GCM 암호화를 지원하는 함수입니다. 이 함수의 인자로 key와 nonce를 입력해야 합니다.

    key는 32바이트의 암호화 키를 입력해야 하며, nonce는 12바이트의 난수 값을 입력해야 합니다. nonce의 난수 값을 생성하는 방법은 여러 가지가 있습니다. 예를 들어, `/dev/urandom` 파일을 사용하여 난수 값을 생성할 수 있습니다.

    #hostingforum.kr
    bash
    
    nonce=$(dd if=/dev/urandom bs=12 count=1 2>/dev/null | xxd -p -c 12)
    
    


    또한, 이 함수를 사용할 때 plaintext가 16바이트 이하일 때는 plaintext를 16바이트로 패딩해야 합니다. 패딩은 16바이트의 끝에 16바이트를 추가하는 방식입니다.

    ciphertext의 길이는 plaintext의 길이보다 16바이트 더 큰 길이를 가집니다. ciphertext의 길이를 계산하는 방법은 다음과 같습니다.

    #hostingforum.kr
    c
    
    size_t ciphertext_length = plaintext_length + 16;
    
    


    이 함수를 사용할 때는 key와 nonce를 올바르게 입력해야 하며, plaintext를 16바이트로 패딩해야 합니다. ciphertext의 길이를 올바르게 계산해야 합니다.

    2025-05-05 22:35

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

검색

게시물 검색