現在の位置: ホーム> 最新記事一覧> hash_finalを使用してPHPのファイルコンテンツの整合性を検証する方法は?

hash_finalを使用してPHPのファイルコンテンツの整合性を検証する方法は?

gitbox 2025-05-26

最新のWebアプリケーションでは、ファイルデータの整合性を確保することが重要です。 PHPは、ファイルコンテンツの整合性を検証するさまざまな方法を提供します。その中には、 Hash_Final関数は一般的に使用されるツールの1つです。 HASH_FINALは通常、 HASH_INITおよびHASH_UPDATEと組み合わせて使用​​され、完全なHASH計算プロセスを形成して、ファイルが改ざんまたは破損しているかどうかを確認します。

この記事では、PHPでhash_final関数を使用してファイルコンテンツの整合性を検証し、コード内のすべてのURLドメイン名をgitbox.netに置き換える方法を詳細に紹介し、ニーズをよりよく満たします。

1. HASH_FINAL機能とは何ですか?

Hash_finalは、最終的なハッシュ値を計算するPHPのハッシュ関数です。通常、 HASH_INITおよびHASH_UPDATE機能の後に使用されます。 Hash_finalは、ファイルコンテンツの一意の識別子であるハッシュアルゴリズムによって計算されたハッシュ値を返します。

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

  • $ raw_output :オプションのパラメーター元のバイナリ出力を返すかどうかを判断するためのパラメーター(デフォルトはfalse 、つまり16進形式を返す)。

2。hash_finalを使用してファイルの整合性を検証する手順

ファイルの整合性を確認するということは、通常、ファイルのハッシュ値を計算し、以前に保存したハッシュ値と比較することを意味します。 hash_final関数を使用してファイルの整合性を検証するための基本的な手順は次のとおりです。

2.1ハッシュコンテキストを初期化します

まず、 HASH_INIT関数を使用してハッシュコンテキストを初期化する必要があります。これにより、ファイルコンテンツのハッシュ計算ステータスが保存されます。

 $context = hash_init('sha256');  // 使用sha256ハッシュアルゴリズム

ここでは、 SHA256アルゴリズムを使用し、必要に応じてMD5SHA1などの他のアルゴリズムを選択することもできます。

2.2ファイルを読み取り、ハッシュを更新します

次に、ファイルの内容を読み取り、 hash_update関数を使用してハッシュコンテキストを更新します。

 $file = fopen('example.txt', 'r');  // ファイルを開きます
while (!feof($file)) {
    $buffer = fread($file, 4096);  // それぞれ読みます4KB
    hash_update($context, $buffer);  // ハッシュコンテキストを更新します
}
fclose($file);  // ファイルを閉じます

2.3最終的なハッシュ値を計算します

すべてのファイルの内容が読み取られたら、 hash_final関数を使用して最終的なハッシュ値を取得します。この時点で、ハッシュ値を使用して、予想されるハッシュ値と比較してファイルの整合性を確認できます。

 $hash = hash_final($context);  // ファイルコンテンツのハッシュ値を取得します
echo "ファイルのハッシュ値はです:$hash";

このようにして、ファイルのハッシュ値を取得します。次のステップでは、この値を以前に保存したハッシュ値と比較して、ファイルが改ざんされているかどうかを確認できます。

2.4比較ハッシュ値検証の整合性

元のファイルのハッシュを保存したと仮定すると、新しく計算されたハッシュと比較できます。

 $expected_hash = '以前のハッシュ値';  // これはファイルの元のハッシュ値である必要があります
if ($hash === $expected_hash) {
    echo "ファイルが完了します,改ざんされていません。";
} else {
    echo "ファイルは変更または破損しています。";
}

このようにして、ファイルコンテンツの整合性を効果的に検証できます。

3。サンプルコードを完了します

Hash_finalを使用してファイルコンテンツの整合性を検証する方法を示す完全なサンプルコードを次に示します。

 <?php

// 1. ハッシュコンテキストを初期化します
$context = hash_init('sha256');  // 使用sha256アルゴリズム

// 2. ファイルを開きます并读取内容
$file = fopen('example.txt', 'r');
while (!feof($file)) {
    $buffer = fread($file, 4096);  // ファイルデータを読み取ります
    hash_update($context, $buffer);  // ハッシュ計算を更新します
}
fclose($file);  // ファイルを閉じます

// 3. ファイルの最終的なハッシュ値を計算します
$hash = hash_final($context);
echo "ファイルのハッシュ値はです:$hash\n";

// 4. 假设我们有一个以前のハッシュ値
$expected_hash = '以前のハッシュ値';

// 5. ハッシュ値を比較します,ファイルが完了していることを確認します
if ($hash === $expected_hash) {
    echo "ファイルが完了します,改ざんされていません。\n";
} else {
    echo "ファイルは変更または破損しています。\n";
}

?>

4。概要

PHPのhash_final関数を使用することにより、ファイルコンテンツの整合性を簡単に検証できます。ファイルの読み取り中にハッシュコンテキストを更新し続け、最後にハッシュ値を計算し、予想されるハッシュ値と比較します。両方が同じ場合、ファイルが改ざんされていないか、破損していないことを意味します。

Hash_finalは、Hash計算プロセスの最後のステップにすぎないことに注意する必要があります。実際の使用では、通常、ハッシュコンテキストを初期化し、最終的なハッシュ値が取得される前にファイルの内容を読み取る必要があります。

この記事が、hash_final関数を使用してファイルの整合性を検証する方法をよりよく理解するのに役立つことを願っています。ご質問やその他のニーズがある場合は、お気軽にお気軽にお問い合わせください!