PHPでは、ハッシュ関数の使用がハッシュ()シリーズの関数を介して実装されます。 Hash()関数自体は、アルゴリズムとデータの2つの主要なパラメーターを受け入れることができます。データのハッシュをすぐに計算し、結果を返します。ただし、特にデータが大きすぎてメモリにロードできない場合は、一度に大きなデータを段階的に処理する必要がある場合があります。この時点で、 hash_updateとhash_final関数は役に立ちます。
hash_update
HASH_UPDATE関数は、データ(ファイルや文字列など)をバッチでハッシュ計算にフィードするために使用されます。既存のハッシュ計算に新しいデータを追加します。 Hash_updateを複数回呼び出すことにより、大きなデータブロックを段階的に処理できます。
文法:
hash_update ( resource $context , string $data ) : bool
$コンテキスト: hash_init関数を介して作成できるハッシュコンテキストリソース。
$データ:現在のハッシュ計算に追加する必要があるデータ。
hash_final
HASH_FINAL関数は、 HASH_UPDATEによってすべてのデータが更新された後、ハッシュ計算を完了し、最終的なハッシュ値を返すために使用されます。
文法:
hash_final ( resource $context , bool $raw_output = false ) : string
$コンテキスト: hash_updateに関連付けられたハッシュコンテキスト。
$ raw_output : trueの場合、元のバイナリデータを返します。 falseの場合は、16進表現のハッシュ値を返します。
次に、具体的な例を使用して、 hash_updateとhash_finalを使用してハッシュ計算を完了する方法を説明します。
<?php
// aを作成します SHA256 ハッシュコンテキスト
$context = hash_init('sha256');
// バッチでデータを更新します
$data1 = "Hello, this is the first part of the data.";
$data2 = " And this is the second part of the data.";
$data3 = " Finally, here is the third part of the data.";
hash_update($context, $data1); // データの最初の部分を更新します
hash_update($context, $data2); // データの2番目の部分を更新します
hash_update($context, $data3); // データの3番目の部分を更新します
// 完全なハッシュ計算を完了し、結果を取得します
$hash = hash_final($context);
// 最終的なハッシュ値を出力します
echo "The computed hash is: " . $hash;
?>
ハッシュコンテキストを初期化<br> Hash_init( 'Sha256')を使用して、ハッシュコンテキストリソースを作成します。ここでは、 SHA256アルゴリズムを選択しましたが、 MD5 、 SHA1などのニーズに応じて異なるハッシュアルゴリズムを選択できます。
徐々にデータを更新します<BR> HASH_UPDATE関数を使用して、データをバッチのハッシュ計算にフィードします。この例では、データは3つの部分に分割され、データは3つのhash_update時間を通じてハッシュコンテキストに徐々に追加されます。
完全なハッシュ計算と結果を出力<br> HASH_FINAL関数を使用してハッシュ計算を完了し、最終的なハッシュ値を返します。ハッシュ値を生のバイナリまたは16進文字列として返すことを選択できます。デフォルトでは、16進列の文字列が返されます。
The computed hash is: 1c7d76e24a56bc69b890f3f8720a2eaf6cf4bb4e3ff315153f0a5e089b131b3c
大量のデータを処理する場合、 Hash()関数を直接使用してハッシュ値を一度に計算すると、特に大きなファイルを処理する場合はメモリが不十分になる可能性があります。したがって、 hash_updateを使用してバッチのハッシュ計算を更新すると、メモリを効果的に保存し、非常に大量のデータを使用してハッシュをスムーズに計算できるようにします。
さらに、 hash_updateとhash_finalは、データストリームの段階的にハッシュ値を計算する柔軟性も提供します。これは、リアルタイムデータまたはブロックごとのブロックを読み取る場合に特に重要です。
ファイルの確認:大きなファイルをアップロードまたはダウンロードするとき、ファイルのハッシュ値を1つずつ計算して、転送プロセス中にファイルが破損していないことを確認できます。
パスワードストレージ:ユーザーパスワードを保存する場合、ハッシュアルゴリズムは通常、パスワードを暗号化するために使用されます。これにより、パスワードデータを徐々に更新することでセキュリティが向上します。
データストリーム暗号化:ビッグデータストリームのリアルタイム暗号化の場合、 hash_updateおよびhash_finalバッチ処理を使用すると、パフォーマンスとメモリの使用効率が向上します。
PHPのhash_updateおよびhash_final関数は、ビッグデータとステップバイステップのコンピューティングハッシュ値を処理するための強力なツールです。ハッシュコンテキストを徐々に更新することにより、メモリを効果的に管理でき、ハッシュ計算の完全性と効率を確保できます。実際の開発では、これら2つの機能を合理的に使用することで、開発者がハッシュ計算タスクを効率的に完了するのに役立ちます。