現在の位置: ホーム> 最新記事一覧> PHPでhash_finalを使用してSHA-256ハッシュを生成する方法は?

PHPでhash_finalを使用してSHA-256ハッシュを生成する方法は?

gitbox 2025-05-27

PHPでは、 hash_final()は、 hash_init()およびhash_update()で使用される関数であり、ステップでハッシュ値を生成します。この一連の関数は、特に大規模なデータストリームまたはセグメント化されたデータを処理するために、 Hash()関数を直接使用するよりも柔軟な方法を提供します。

この記事では、hash_final()を使用してSHA-256ハッシュ値を生成する方法について説明します。

hash_final()とは何ですか?

Hash_final()は、ハッシュコンテキストを完了し、最終的なハッシュ値を返すために使用されます。 Hash_init() (Hashコンテキストの初期化)およびHash_update() (コンテキストにデータを追加)と組み合わせて使用​​されます。

このアプローチは、大きなファイルの処理やストリーミングデータなど、すべてのデータを一度にメモリに入れることができない場合に特に適しています。

基本的な手順

SHA-256ハッシュを生成するための基本的な手順は次のとおりです。

1 ??ハッシュコンテキストを初期化します
2 ??データをセグメントに渡します
3 ??最終的なハッシュ値を取得します

サンプルコード

次のコードは、セグメントで文字列データを処理する方法を示し、SHA-256ハッシュを生成します。

 <?php
// 最初のステップ:ハッシュコンテキストを初期化します,アルゴリズムを指定します sha256
$context = hash_init('sha256');

// ステップ2:セグメントのデータを更新します(複数回呼び出すことができます hash_update)
$dataPart1 = 'Hello, ';
$dataPart2 = 'this is a test ';
$dataPart3 = 'using hash_final().';

hash_update($context, $dataPart1);
hash_update($context, $dataPart2);
hash_update($context, $dataPart3);

// ステップ3:最終的なハッシュ値を取得します(16進に関する文字列)
$hash = hash_final($context);

echo "ファイナル SHA-256 ハッシュ値はです: $hash";
?>

出力例:

 ファイナル SHA-256 ハッシュ値はです: 6e4b18e9f8f2de9d4d70f43b8f6b1c7e6812b826ad3b1c5eaf2df62e245b3f94

例:ファイルストリームの処理

大きなファイルでSHA-256ハッシュを生成する場合は、これを行うことができます。

 <?php
$context = hash_init('sha256');

// ファイルストリームを開きます
$handle = fopen('https://gitbox.net/path/to/largefile.zip', 'rb');
if ($handle === false) {
    die('ファイルを開くことができません。');
}

// それぞれ読みます 8KB
while (!feof($handle)) {
    $data = fread($handle, 8192);
    hash_update($context, $data);
}

fclose($handle);

$hash = hash_final($context);

echo "提出 SHA-256 ハッシュ値はです: $hash";
?>

この例では、 FOPEN()を使用して、リモートファイルhttps://gitbox.net/path/to/largefile.zipを直接読み取り、ハッシュコンテキストブロックをブロックごとに更新し、最後にファイルのSHA-256ハッシュ値を取得します。

ヒント

?小さなデータ(文字列など)にハッシュを生成するだけである場合、実際にはhash()を直接使用する方が簡単です。

 $hash = hash('sha256', 'Hello, this is a test.');

hash_final()が使い果たされると、ハッシュコンテキストが破壊されます。再利用したい場合は、 hash_init()を再度呼び出す必要があります。