개발자 Q&A

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

2025.03.17 10:14

hash_hkdf 관련 질문

  • 인증체계장인 11시간 전 2025.03.17 10:14 새글
  • 6
    1
제가 이번에 공부하는 암호학 관련 문제에서 hash_hkdf 함수를 사용해보기로 했습니다.
hash_hkdf 함수는 Key Derivation Function(KDF)로, 비밀키를 안전하게 생성하기 위해 사용됩니다.
그런데 hash_hkdf 함수의 사용법에 대해 이해가 잘 안 되는데요.
hash_hkdf 함수의 salt, ikm, info 파라미터는 어떤 의미를 가졌고, 각 파라미터의 길이는 어떻게 설정해야 하는지 궁금합니다.
그리고 hash_hkdf 함수를 사용하여 비밀키를 생성한 후, 그 비밀키를 암호화하는 방법에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  11시간 전



    hash_hkdf 함수는 Key Derivation Function(KDF)로, 비밀키를 안전하게 생성하기 위해 사용됩니다.

    - salt: salt는 고유의 값을 의미하며, 비밀키 생성을 위한 고유의 값을 제공합니다. salt의 길이는 32바이트 이상으로 설정해야 합니다.
    - ikm: ikm은 입력 키 매트릭스(Input Key Material)의 약자로, 비밀키 생성에 사용되는 입력값을 의미합니다. ikm의 길이는 32바이트 이상으로 설정해야 합니다.
    - info: info는 정보의 약자로, 비밀키 생성에 사용되는 추가 정보를 의미합니다. info의 길이는 16바이트 이상으로 설정해야 합니다.

    hash_hkdf 함수를 사용하여 비밀키를 생성한 후, 그 비밀키를 암호화하는 방법은 다음과 같습니다.

    1. 비밀키를 생성하는 함수인 hash_hkdf를 호출하여 비밀키를 생성합니다.
    2. 생성된 비밀키를 암호화하는 함수인 openssl_encrypt를 호출하여 암호화합니다.
    3. 암호화된 비밀키를 반환합니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $salt = openssl_random_pseudo_bytes(32);
    
    $ikm = openssl_random_pseudo_bytes(32);
    
    $info = openssl_random_pseudo_bytes(16);
    
    
    
    $secret = hash_hkdf('sha256', $ikm, $salt, $info, 32);
    
    
    
    $cipher = 'aes-256-cbc';
    
    $key = $secret;
    
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher));
    
    
    
    $encrypted = openssl_encrypt($secret, $cipher, $key, OPENSSL_RAW_DATA, $iv);
    
    
    
    echo $encrypted;
    
    


    위 코드는 salt, ikm, info를 생성하고, hash_hkdf 함수를 호출하여 비밀키를 생성한 후, 생성된 비밀키를 암호화하는 예제입니다.

    2025-03-17 10:15

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

검색

게시물 검색