파일 데이터 무결성 확인은 일반적으로 전송 또는 스토리지 중 파일이 변조되었는지 또는 손상되었는지 여부를 확인합니다. 파일 무결성을 보장하기 위해 해시 알고리즘이 일반적으로 사용됩니다. 해시 알고리즘은 파일의 내용을 "해시"또는 "요약"이라는 고정 길이 문자열로 변환합니다. 파일 내용이 변경되면 해당 해시 값도 변경됩니다.
PHP에서 HASH_Final 함수는 해시 컨텍스트의 최종 결과를 반환하는 데 사용됩니다. 이 기능은 일반적으로 파일 또는 문자열 데이터의 해시 계산을 처리하기 위해 hash_init 및 hash_update 와 함께 사용됩니다. 기본 구문은 다음과 같습니다.
string hash_final ( resource $context [, bool $raw_output = false ] )
$ Context는 Hash_init 이 반환 한 해시 컨텍스트 리소스입니다.
$ raw_output 은 선택적 매개 변수, 기본값에서 false 입니다. 즉, 해시 값이 16 진 형식으로 반환되었음을 의미합니다. true 로 설정되면 원래 바이너리 해시 값이 반환됩니다.
file_put_contents 는 PHP의 파일 작동 함수로 파일에 데이터를 작성합니다. 기본 구문은 다음과 같습니다.
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
$ filename은 작성할 파일 이름입니다.
$ 데이터는 작성할 데이터입니다.
$ flags는 파일을 덮어 쓰거나 데이터를 추가할지 여부와 같은 글을 쓰는 동안 동작을 나타내는 선택적 매개 변수입니다.
$ 컨텍스트는 파일 작동의 컨텍스트를 나타내는 선택적 매개 변수입니다.
HASH_FINAL 및 FILE_PUT_CONTENTS 기능을 결합하여 간단한 파일 무결성 검증 메커니즘을 구현할 수 있습니다. 구현 프로세스의 자세한 단계는 다음과 같습니다.
해시 계산 초기화 : 먼저 Hash_init 함수를 사용하여 해시 컨텍스트를 초기화하여 사용 된 해시 알고리즘 (예 : SHA256 )을 지정합니다.
파일 내용을 읽고 해시 업데이트 : Hash_update 함수를 사용하여 파일의 내용을 읽고 읽을 때마다 해시 값을 업데이트하십시오.
파일에 쓰기 : file_put_contents 함수를 통해 파일 내용을 지정된 파일에 쓰십시오.
파일의 해시 값을 생성하십시오 . 마지막으로, 최종 해시 값은 Hash_final 함수를 통해 얻어지고 파일의 일부로 저장되거나 데이터베이스에 저장됩니다.
다음은 hash_final 및 file_put_contents 함수를 사용하여 파일 데이터 무결성 검증을 구현하는 샘플 코드입니다.
<?php
// 파일 경로
$filePath = 'path/to/your/file.txt';
// 해시 컨텍스트를 초기화합니다
$context = hash_init('sha256');
// 파일 내용을 읽고 해시 값을 업데이트하십시오
$fileContent = file_get_contents($filePath);
hash_update($context, $fileContent);
// 최종 해시 값을 얻으십시오
$hashValue = hash_final($context);
// 대상 파일에 파일 내용을 쓰십시오
$targetFilePath = 'path/to/your/destination/file.txt';
file_put_contents($targetFilePath, $fileContent);
// 해시 값을 파일 또는 데이터베이스에 저장합니다(후속 확인을 위해)
$hashFilePath = 'path/to/your/file_hash.txt';
file_put_contents($hashFilePath, $hashValue);
// 출력 해시 값
echo "파일의 해시 값은입니다: " . $hashValue;
?>
파일 내용과 해당 해시 값이 저장되면 다음 단계를 통해 파일의 무결성을 확인할 수 있습니다.
파일 내용 읽기 : 먼저 대상 파일의 내용을 읽으십시오.
파일의 해시 값을 계산합니다 . 그런 다음 동일한 해시 알고리즘을 사용하여 파일의 해시 값을 계산하십시오.
해시 비교 : 마지막으로 계산 된 해시 값을 저장된 해시 값과 비교하십시오. 두 사람이 일관성이 있다면 파일이 변조되지 않았 음을 의미합니다. 일관성이 없다면 파일의 내용이 변경되었음을 의미합니다.
파일 무결성을 확인하기위한 코드 예제는 다음과 같습니다.
<?php
// 저장된 해시 값을 읽으십시오
$storedHash = file_get_contents('path/to/your/file_hash.txt');
// 대상 파일의 내용을 읽으십시오
$fileContent = file_get_contents('path/to/your/destination/file.txt');
// 해시 컨텍스트를 초기화합니다并计算文件哈希值
$context = hash_init('sha256');
hash_update($context, $fileContent);
$calculatedHash = hash_final($context);
// 해시 값을 비교하십시오
if ($storedHash === $calculatedHash) {
echo "파일 무결성 확인이 통과되었습니다,파일은 변조되지 않았습니다。";
} else {
echo "파일 무결성 확인에 실패했습니다,파일이 변조되었을 수 있습니다。";
}
?>
PHP의 hash_final 과 file_put_contents 함수를 결합하여 간단한 파일 데이터 무결성 검증 메커니즘을 구현할 수 있습니다. 실제 개발 에서이 방법을 사용하여 스토리지 또는 전송 중 파일의 데이터가 변조되지 않도록 할 수 있습니다. 보안을 향상시키기 위해 SHA256 또는 SHA512 와 같이 보안이 높은 해싱 알고리즘을 선택하고 다른 보안 조치를 결합하여 파일 데이터의 무결성을 보호하는 것이 좋습니다.