Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP md5_file() 함수 완벽 정리 – 파일의 MD5 해시 값 계산하기


PHP의 md5_file() 함수는 지정한 파일 내용에 대한 MD5 해시 값을 계산할 때 사용합니다. 본격적으로 함수 사용법을 살펴보기 전에, MD5가 무엇인지 먼저 간단히 짚고 넘어가겠습니다.

MD5란 무엇일까?

MD5 메시지 다이제스트 알고리즘은 임의 길이의 메시지를 입력으로 받아 128비트 길이의 "지문(fingerprint)", 즉 메시지 다이제스트(message digest)를 출력으로 생성합니다.

MD5는 원래 디지털 서명(digital signature) 용도로 설계되었습니다. RSA와 같은 공개 키 암호화 시스템에서 개인 키로 암호화하기 전에 대용량 파일을 안전하게 "압축"해야 하는 상황에서 활용하기 위함입니다.

— 참고: RFC 1321, The MD5 Message-Digest Algorithm 발췌 —

문법(Syntax)

md5_file(string $filename, bool $binary = false): string|false

매개변수(Parameters)

  • file_name — MD5 해시를 계산할 파일의 경로를 지정합니다.

  • raw — 반환 형식을 결정하는 불리언(Boolean) 값입니다.

    • TRUE — 16자리 원본 바이너리(binary) 형식으로 반환합니다.

    • FALSE — 기본값이며, 32자리 16진수(hexadecimal) 문자열로 반환합니다.

반환 값(Return Value)

md5_file() 함수는 해시 계산에 성공하면 문자열을 반환하고, 실패하면 FALSE를 반환합니다.

사용 예제

다음은 텍스트 파일의 MD5 해시 값을 구하는 예제입니다.

<?php
    $file = "Md5.txt";
    $md5file = md5_file($file);
    echo $md5file;
?>

실행 결과

위 코드를 실행하면 다음과 같이 32자리 16진수 형태의 해시 값이 출력됩니다.

79054025255fb1a26e4bc422aef54eb4

실무 활용 팁

md5_file() 함수는 다음과 같은 상황에서 특히 유용합니다.

  • 다운로드한 파일이 손상되거나 변조되지 않았는지 무결성 검증
  • 두 파일의 내용이 동일한지 해시 값만으로 빠르게 비교
  • 캐시 갱신 여부 확인 등 파일 변경 감지

다만 MD5는 해시 충돌(collision) 취약성이 알려져 있어 보안이 중요한 용도에는 부적합합니다. 비밀번호 저장처럼 보안이 필요한 작업에는 password_hash() 함수나 SHA-256 같은 더 강력한 알고리즘을 사용하는 것이 좋습니다.