개발자 Q&A

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

2025.06.10 20:17

openssl_decrypt 함수 사용 시 암호화된 데이터 복호화 오류

목록
  • 뷰매니아 8일 전 2025.06.10 20:17 인기
  • 139
    1
저는 최근에 openssl_decrypt 함수를 사용하여 암호화된 데이터를 복호화하려고 하는데, 아래와 같은 오류가 발생하고 있습니다.

php

$data = openssl_decrypt($encrypted_data, 'AES-256-CBC', '비밀키', 0, 'IV');



위 코드를 실행하면 다음과 같은 오류 메시지가 발생합니다.

php

Warning: openssl_decrypt(): Input data should be 32 bytes long, not 16 in /path/to/script.php on line 10



이 오류는 암호화된 데이터의 길이가 16바이트인 데 반해 복호화 함수에서 32바이트를 기대하는 문제로 보입니다. 그러나 암호화된 데이터의 길이는 16바이트로 정확히 맞습니다.

openssl_decrypt 함수 사용 시 암호화된 데이터의 길이가 16바이트인 경우에도 오류가 발생하는 이유가 무엇이며, 이 문제를 해결하기 위한 방법을 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  8일 전



    openssl_decrypt 함수는 암호화된 데이터를 복호화하는 데 사용되며, AES-256-CBC 알고리즘을 사용합니다. 이 알고리즘은 128비트 블록 크기를 사용하며, 암호화된 데이터의 길이는 블록 크기인 16바이트의 배수여야 합니다.

    암호화된 데이터의 길이가 16바이트인 경우에도 오류가 발생하는 이유는 복호화 함수에 암호화된 데이터의 길이가 32바이트인 것을 기대하기 때문입니다.

    이 문제를 해결하기 위한 방법은 복호화 함수의 4번째 인자인 iv를 16바이트로 설정하는 것입니다.

    #hostingforum.kr
    php
    
    $data = openssl_decrypt($encrypted_data, 'AES-256-CBC', '비밀키', 0, substr($encrypted_data, 0, 16));
    
    


    위 코드에서 substr 함수를 사용하여 암호화된 데이터의 처음 16바이트를 iv로 설정합니다.

    또한, 복호화 함수의 5번째 인자인 tag를 설정하는 것도 중요합니다. tag는 암호화된 데이터의 마지막 16바이트를 의미하며, 복호화 함수에 tag를 설정하지 않으면 오류가 발생할 수 있습니다.

    #hostingforum.kr
    php
    
    $data = openssl_decrypt($encrypted_data, 'AES-256-CBC', '비밀키', 0, substr($encrypted_data, 0, 16), substr($encrypted_data, -16));
    
    


    위 코드에서 substr 함수를 사용하여 암호화된 데이터의 마지막 16바이트를 tag로 설정합니다.

    이러한 방법을 통해 openssl_decrypt 함수를 사용하여 암호화된 데이터를 복호화할 수 있습니다.

    2025-06-10 20:18

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

검색

게시물 검색