개발자 Q&A

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

2025.04.22 03:19

openssl_encrypt 함수의 사용법에 대한 도움을 청합니다.

목록
  • 알파코더 4일 전 2025.04.22 03:19
  • 61
    1
openssl_encrypt 함수를 사용하여 데이터를 암호화할 때, 암호화 모드와 알고리즘을 지정하는 방법에 대해 궁금합니다.

openssl_encrypt 함수는 다양한 암호화 모드와 알고리즘을 지원하는데, 이 중에서 AES-256-CBC를 사용할 때, 암호화 모드와 키를 지정하는 방법을 알려줄 수 있을까요?

특히, 암호화 모드에 따라 암호화된 데이터의 길이가 달라지는 이유를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  4일 전



    openssl_encrypt 함수는 다양한 암호화 모드와 알고리즘을 지원합니다. AES-256-CBC를 사용할 때는 암호화 모드를 'AES-256-CBC'로, 키를 32비트(256비트 키의 4바이트) 길이의 바이너리 문자열로 지정합니다.

    예를 들어, AES-256-CBC를 사용하여 데이터를 암호화하려면 다음과 같은 코드를 사용할 수 있습니다:

    #hostingforum.kr
    php
    
    $plaintext = "Hello, World!";
    
    $iv = openssl_random_pseudo_bytes(16); // 16바이트의 난수 생성
    
    $key = openssl_random_bytes(32); // 32바이트의 랜덤 키 생성
    
    $cipher = 'AES-256-CBC';
    
    $encrypted = openssl_encrypt($plaintext, $cipher, $key, 0, $iv);
    
    echo '암호화 모드: ' . $cipher . "n";
    
    echo '암호화 키: ' . bin2hex($key) . "n";
    
    echo '초기화 벡터: ' . bin2hex($iv) . "n";
    
    echo '암호화된 데이터: ' . bin2hex($encrypted) . "n";
    
    
    
    // 암호화 모드에 따라 암호화된 데이터의 길이가 달라지는 이유는 다음과 같습니다.
    
    // 암호화 모드는 데이터를 블록으로 나누고, 각 블록을 암호화합니다. AES-256-CBC는 16바이트의 블록 크기를 사용합니다.
    
    // 따라서, AES-256-CBC를 사용할 때, 데이터의 길이가 16의 배수가 되지 않으면, 데이터를 채우는 기법을 사용하여 16바이트로 맞춤니다.
    
    
    
    // 예를 들어, 17바이트의 데이터를 암호화할 때, 1바이트를 추가로 채운 후 16바이트의 블록으로 나누어 암호화합니다.
    
    
    
    // 이와 같이, 암호화 모드에 따라 암호화된 데이터의 길이가 달라질 수 있습니다.
    
    

    2025-04-22 03:20

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

검색

게시물 검색