現在の位置: ホーム> 最新記事一覧> hash_finalは、file_put_contentsを組み合わせて、データの整合性検証を実現します

hash_finalは、file_put_contentsを組み合わせて、データの整合性検証を実現します

gitbox 2025-05-19

ファイルデータの整合性検証とは、通常、ファイルが送信またはストレージ中に改ざんされているか、破損しているかを確認することを指します。ファイルの整合性を確保するために、ハッシュアルゴリズムが通常使用されます。ハッシュアルゴリズムは、ファイルの内容を「ハッシュ」または「概要」と呼ばれる固定長文字列に変換します。ファイルコンテンツが変更された場合、対応するハッシュ値も変更されます。

2。Hash_Final関数の紹介

PHPでは、 hash_final関数を使用して、ハッシュコンテキストの最終結果を返します。この関数は通常、 hash_initおよびhash_updateと組み合わせて使用​​して、ファイルまたは文字列データのハッシュ計算を処理します。基本的な構文は次のとおりです。

 string hash_final ( resource $context [, bool $raw_output = false ] )
  • $コンテキストはhash_initによって返されるハッシュコンテキストリソースです。

  • $ raw_outputはオプションのパラメーターであり、デフォルトでfalseになります。つまり、ハッシュ値は16進形式で返されます。 trueに設定すると、元のバイナリハッシュ値が返されます。

3。file_put_contents関数の概要

file_put_contentsは、データをファイルに書き込むファイル操作機能です。その基本的な構文は次のとおりです。

 int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
  • $ filenameは、書かれたファイル名です。

  • $データは、記述すべきデータです。

  • $ flagsは、ファイルを上書きするかデータを上書きするかなど、執筆中の動作を示すオプションのパラメーターです。

  • $コンテキストは、ファイル操作のコンテキストを表すオプションのパラメーターです。

4.ファイルデータの整合性検証を実現します

hash_finalfile_put_contents関数を組み合わせて、単純なファイルの整合性検証メカニズムを実装できます。実装プロセスの詳細な手順は次のとおりです。

  1. ハッシュ計算の初期化:最初に、 HASH_INIT関数を使用してハッシュコンテキストを初期化し、使用するハッシュアルゴリズムを指定します(たとえば、 SHA256 )。

  2. ファイルのコンテンツを読み取り、ハッシュを更新しますHASH_UPDATE関数を使用してファイルの内容を読み取り、読み取るたびにハッシュ値を更新します。

  3. ファイルに書き込むfile_put_contents関数を介して指定されたファイルにファイルの内容を書き込む。

  4. ファイルのハッシュ値を生成します。最後に、最終的なハッシュ値はhash_final関数を介して取得され、ファイルの一部として保存されるか、データベースに保存されます。

5。サンプルコード

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;
?>

6.ファイルの整合性を確認します

ファイルコンテンツと対応するハッシュ値が保存されたら、次の手順を使用してファイルの整合性を確認できます。

  1. ファイルコンテンツの読み取り:最初に、ターゲットファイルのコンテンツを読み取ります。

  2. ファイルのハッシュ値を計算します。次に、同じハッシュアルゴリズムを使用して、ファイルのハッシュ値を計算します。

  3. ハッシュを比較してください。最後に、計算されたハッシュ値を保存されたハッシュ値と比較します。 2つが一貫している場合、ファイルが改ざんされていないことを意味します。一貫性がない場合、ファイルのコンテンツが変更されたことを意味します。

ファイルの整合性を確認するためのコード例を次に示します。

 <?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 "ファイルの整合性の確認に失敗しました,ファイルが改ざんされている可能性があります。";
}
?>

7。概要

PHPのhash_finalfile_put_contents関数を組み合わせることにより、単純なファイルデータの整合性検証メカニズムを実装できます。実際の開発では、この方法を使用して、ストレージまたは送信中のファイルのデータが改ざんされていないことを確認できます。セキュリティを改善するには、 SHA256SHA512などのセキュリティが高いハッシュアルゴリズムを選択し、他のセキュリティ対策を組み合わせてファイルデータの整合性を保護することをお勧めします。