PHP에서 MD5_FILE () 함수는 지정된 파일의 MD5 해시 값을 계산하는 간단하고 효과적인 방법입니다. 파일의 MD5 값을 비교하면 파일이 수정되었는지 또는 변조되었는지 확인할 수 있습니다. 이 기사는 MD5_File () 함수를 사용하여 파일 무결성 확인을 달성하는 방법을 자세히 소개합니다.
md5_file () 함수는 파일 경로를 매개 변수로 취하고 파일 내용의 MD5 해시 값 (32 비트 16 진수 문자열)을 반환합니다. MD5는 파일의 "지문"을 빠르게 생성하여 파일 컨텐츠가 일관성이 있는지 비교할 수있는 널리 사용되는 해싱 알고리즘입니다.
기능 프로토 타입 :
string md5_file ( string $filename [, bool $raw_output = false ] )
$ filename : MD5를 계산하는 파일 경로.
$ raw_output (선택 사항) : true 로 설정된 경우 원래 바이너리 형식을 반환합니다. 기본값은 False 이고 32 자 육각형 문자열을 반환합니다.
먼저 파일의 초기 MD5 값을 계산하고 저장합니다 (예 : 데이터베이스, 파일 또는 캐시에 저장).
확인이 필요한 경우 파일의 MD5 값을 다시 계산하십시오.
MD5 값을 두 번 비교하십시오. 일관된 경우 파일이 수정되지 않았 음을 의미합니다. 그렇지 않으면 파일 내용이 변경되었습니다.
다음 예제는 md5_file ()을 사용하여 파일이 변조되었는지 여부를 감지하는 방법을 보여줍니다.
<?php
// 파일 경로
$file = 'path/to/your/file.txt';
// 파일이 처음으로 계산됩니다MD5값(데이터베이스 또는 파일에 저장할 수 있습니다)
$original_md5 = md5_file($file);
// 저장된 절차를 시뮬레이션합니다,여기에 변수로 직접 저장하십시오
file_put_contents('md5_store.txt', $original_md5);
// 후속 탐지 중에 저장된 읽기MD5값
$saved_md5 = file_get_contents('md5_store.txt');
// 현재 파일을 다시 계산하십시오MD5값
$current_md5 = md5_file($file);
// 파일이 수정되었는지 여부를 결정하십시오
if ($saved_md5 === $current_md5) {
echo "파일이 수정되지 않았습니다,완전성 검증이 통과되었습니다。";
} else {
echo "파일 콘텐츠 변경,아마 변조했을 것입니다!";
}
?>
원격 파일의 무결성을 확인하고 먼저 원격 파일을 로컬로 다운로드 한 다음 md5_file ()을 사용할 수 있다고 가정합니다. 원격 URL 도메인 이름을 m66.net 으로 균일하게 교체 해야하는 경우 링크를 변경하십시오.
예:
<?php
// 원격 파일URL(도메인 이름을 대체하십시오m66.net)
$url = 'https://m66.net/path/to/remote/file.txt';
$local_file = 'downloaded_file.txt';
// 下载원격 파일到本地
file_put_contents($local_file, file_get_contents($url));
// 파일을 계산하고 출력합니다MD5값
echo "원격 파일的MD5값为:" . md5_file($local_file);
?>
MD5 알고리즘은 빠르지 만 충돌의 위험이 있습니다. 보안이 더 높은 경우 PHP의 HASH_FILE ( 'SHA256', $ filename) 과 같은 SHA256과 같은 더 강력한 해시 알고리즘을 사용해보십시오.
파일을 읽을 때 파일 경로가 올바른지 확인하고 읽기 권한이 있는지 확인하십시오.
큰 파일의 경우 MD5 값을 계산하는 데 시간이 걸릴 수 있습니다.
요약하면, MD5_File ()은 파일이 변조되었는지 여부를 감지하는 간단하고 효과적인 도구입니다. 저장된 MD5 값과 결합하여 파일 무결성 검증의 기본 기능을 실현할 수 있습니다. 보안 요구 사항이 높은 시나리오에서는 다른 보안 메커니즘과 더 강력한 해싱 알고리즘을 결합하는 것이 좋습니다.