Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】MHASH_SHA256定数の使い方

MHASH_SHA256定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

MHASH_SHA256定数は、PHPのmhash拡張機能において、SHA-256ハッシュアルゴリズムを指定するために使用される定数です。この定数を利用することで、mhash()関数などの関連する関数に対して、どの種類のハッシュ計算を行うべきかを明確に指示できます。

SHA-256は、"Secure Hash Algorithm 256-bit"の略で、一方向ハッシュ関数の一種です。このアルゴリズムは、入力された任意の長さのデータから、常に固定長の256ビット(32バイト)のハッシュ値(メッセージダイジェスト)を生成します。生成されたハッシュ値から元のデータを逆算することは非常に困難であり、また、入力データがわずかに変更されただけでも全く異なるハッシュ値が生成されるという特性を持っています。これらの特性から、データの完全性検証、パスワードの安全な保存、デジタル署名といったセキュリティ関連の重要な用途で広く活用されています。

システムエンジニアを目指す初心者の方にとって、MHASH_SHA256定数は、信頼性の高い標準的なハッシュアルゴリズムをPHPアプリケーションに導入する際に役立ちます。この定数を使うことで、コードの意図が明確になり、可読性が向上します。さらに、アルゴリズムを数値で直接指定する代わりに意味のある名前を用いることで、誤りの可能性を減らし、将来的なコードの保守性を高めることができます。PHP 8環境においても、この定数はセキュアなシステム構築をサポートする重要な要素として利用可能です。

構文(syntax)

1<?php
2echo MHASH_SHA256;
3?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHPでSHA256ハッシュを計算する

1<?php
2
3/**
4 * 指定された文字列のSHA256ハッシュを計算します。
5 *
6 * PHP 8では、SHA256のようなハッシュアルゴリズムの計算には
7 * 標準の `hash()` 関数が推奨されます。(`MHASH_SHA256` はmhash拡張の定数ですが、
8 * mhash拡張はPHP 8で削除されているため、直接使用することはできません)。
9 *
10 * @param string $data ハッシュ化する文字列
11 * @return string SHA256ハッシュ値 (小文字の16進数形式)
12 */
13function calculateSha256Hash(string $data): string
14{
15    // 'sha256' アルゴリズムを使用して、入力文字列のハッシュを計算します。
16    // hash() 関数は、指定されたアルゴリズムでデータをハッシュ化し、
17    // その結果を16進数形式の文字列として返します。
18    return hash('sha256', $data);
19}
20
21// --- サンプル使用例 ---
22
23// ハッシュ化したい元の文字列を定義します。
24$originalString = "Hello, system engineers in training!";
25
26// 関数を呼び出してSHA256ハッシュを計算します。
27$sha256Result = calculateSha256Hash($originalString);
28
29// 結果を表示します。
30echo "元の文字列: " . $originalString . PHP_EOL;
31echo "SHA256ハッシュ: " . $sha256Result . PHP_EOL;
32
33// 別の文字列で試すこともできます。
34$anotherString = "PHP is a versatile language.";
35$anotherSha256Result = calculateSha256Hash($anotherString);
36
37echo "別の元の文字列: " . $anotherString . PHP_EOL;
38echo "別のSHA256ハッシュ: " . $anotherSha256Result . PHP_EOL;
39
40?>

このPHPコードは、指定された文字列のSHA256ハッシュ値を計算する方法を示しています。SHA256は、データが改ざんされていないか確認したり、パスワードを安全に保存したりする際によく利用される、一方向の暗号学的ハッシュアルゴリズムです。

PHP 8では、かつてハッシュ計算に利用されていたmhash拡張が削除されています。このため、リファレンス情報にあるMHASH_SHA256という定数を直接使用することはできません。

現在、PHP標準のhash()関数が推奨されています。この関数は、第一引数に利用したいハッシュアルゴリズム名(例えば、SHA256の場合は'sha256')を、第二引数にハッシュ化したい文字列を指定します。hash()関数は、指定されたアルゴリズムでデータをハッシュ化し、その結果を小文字の16進数形式の文字列として返します。

サンプルコードでは、calculateSha256Hashという関数を定義し、内部でhash()関数を利用しています。このcalculateSha256Hash関数は、$dataという文字列を引数として受け取ります。$dataはハッシュ化の対象となる元の文字列であり、関数内でSHA256ハッシュが計算されます。そして、計算されたSHA256ハッシュ値が文字列として戻り値で返されるため、初心者の方でも安全なハッシュ値を簡単に生成し、利用することができます。

PHP 8では、MHASH_SHA256 定数を含むmhash拡張は削除されているため、直接利用することはできません。初心者が古いドキュメントや情報に基づきこの定数を使おうとするとエラーになる点に注意が必要です。代わりに、標準の hash() 関数を使用し、第一引数に 'sha256' を指定してSHA256ハッシュを計算してください。サンプルコードのように hash('sha256', $data) と記述することで、安全かつ正確にハッシュ値を取得できます。ハッシュは一方向の不可逆な変換であり、元の文字列を復元することはできません。主にデータの整合性確認やパスワードの保存などに使われますが、パスワードなどの機密情報を扱う際は、ソルトの追加などさらなるセキュリティ対策を講じることが重要です。

PHPで文字列のSHA256ハッシュを生成する

1<?php
2
3/**
4 * 指定された文字列のSHA256ハッシュを計算します。
5 *
6 * MHASH_SHA256 定数は、PHP 7.0 で削除された古い mhash 拡張機能で使用されていました。
7 * PHP 8 では、代わりに hash() 関数を使用して SHA256 ハッシュを計算することが推奨されます。
8 *
9 * @param string $data ハッシュ化する元の文字列。
10 * @return string SHA256形式のハッシュ値(16進数文字列)。
11 */
12function generateSha256Hash(string $data): string
13{
14    // hash() 関数は、指定されたアルゴリズム(例: 'sha256')でデータのハッシュを生成します。
15    // 第2引数にはハッシュ化するデータを、第3引数には生データを返すかどうか(デフォルトはfalseで16進数文字列を返す)を指定します。
16    return hash('sha256', $data);
17}
18
19// --- 使用例 ---
20$originalString = "プログラミング言語は楽しい!";
21$sha256Hash = generateSha256Hash($originalString);
22
23echo "元の文字列: " . $originalString . PHP_EOL;
24echo "SHA256ハッシュ: " . $sha256Hash . PHP_EOL;
25
26// 別の入力値での例
27$anotherString = "PHP初心者もシステムエンジニアを目指せる!";
28$anotherSha256Hash = generateSha256Hash($anotherString);
29
30echo "別の元の文字列: " . $anotherString . PHP_EOL;
31echo "別のSHA256ハッシュ: " . $anotherSha256Hash . PHP_EOL;
32
33?>

PHPのMHASH_SHA256は、過去のバージョン(PHP 7.0で削除済み)で使用されていた古い定数であり、現在のPHP 8ではSHA256ハッシュを計算する際にはhash()関数を使用することが推奨されています。このサンプルコードは、PHP 8で文字列のSHA256ハッシュを計算する方法を示しています。

generateSha256Hash関数は、引数として受け取った$data(ハッシュ化したい元の文字列)のSHA256ハッシュ値を計算して返します。この関数内部では、PHP標準のhash()関数が利用されています。hash()関数の第一引数には「sha256」と指定することでSHA256アルゴリズムを使用するように指示し、第二引数には元の文字列$dataを渡します。関数は計算されたハッシュ値を、16進数形式の文字列として戻り値で返します。

例えば、「プログラミング言語は楽しい!」という文字列をこの関数に渡すと、その文字列に対応する一意のSHA256ハッシュ値が生成され、画面に表示されます。これにより、データの改ざん検知など、セキュリティ関連の機能で広く利用されるハッシュ値を簡単に取得することができます。

このサンプルコードはPHP 8環境でSHA256ハッシュを計算する方法を示しています。リファレンスにあるMHASH_SHA256定数は、PHP 7.0で削除された古い機能のため、現在のPHPバージョンでは使用できません。初心者の皆さんは、この定数を使おうとせず、代わりにhash('sha256', データ)関数を用いるのが正しい方法として覚えてください。SHA256ハッシュは、データの改ざん検知やパスワードの安全な保存(ソルトなど他の手法と組み合わせる必要があります)などに利用されます。これは元のデータに復元できない一方向の特性を持つため、用途を理解して適切に活用することが重要です。

関連コンテンツ

関連プログラミング言語