要使用PHP的fileinfo擴(kuò)展來驗(yàn)證文件的完整性,您可以比較文件的元數(shù)據(jù)(如文件大小、創(chuàng)建時(shí)間、修改時(shí)間等)與預(yù)期的值
<?php
function verifyFileIntegrity($filePath, $expectedFileSize, $expectedCreationTime, $expectedModificationTime) {
// 檢查文件是否存在
if (!file_exists($filePath)) {
return false;
}
// 獲取文件的元數(shù)據(jù)
$fileInfo = finfo_open(FILEINFO_MINITIME | FILEINFO_MINVERSION);
$fileMetadata = finfo_file($fileInfo, $filePath);
finfo_close($fileInfo);
// 獲取文件的當(dāng)前元數(shù)據(jù)
$currentFileSize = filesize($filePath);
$currentCreationTime = filemtime($filePath);
$currentModificationTime = filemtime($filePath);
// 比較元數(shù)據(jù)與預(yù)期值
if ($currentFileSize != $expectedFileSize) {
return false;
}
if ($currentCreationTime !== $expectedCreationTime) {
return false;
}
if ($currentModificationTime !== $expectedModificationTime) {
return false;
}
return true;
}
// 使用示例
$filePath = 'path/to/your/file.txt';
$expectedFileSize = 1024; // 預(yù)期文件大小(字節(jié))
$expectedCreationTime = 1632931200; // 預(yù)期創(chuàng)建時(shí)間(Unix時(shí)間戳)
$expectedModificationTime = 1633017600; // 預(yù)期修改時(shí)間(Unix時(shí)間戳)
if (verifyFileIntegrity($filePath, $expectedFileSize, $expectedCreationTime, $expectedModificationTime)) {
echo "文件完整性驗(yàn)證通過。";
} else {
echo "文件完整性驗(yàn)證失敗。";
}
?>
請注意,這個(gè)示例使用了文件的創(chuàng)建時(shí)間和修改時(shí)間作為驗(yàn)證依據(jù)。您可以根據(jù)需要添加其他元數(shù)據(jù)(如MD5哈希值)來進(jìn)行更嚴(yán)格的完整性檢查。