PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのsha1()関数とは?使い方とサンプルコードをわかりやすく解説

PHPのsha1()関数は、文字列のSHA-1ハッシュ値を計算するための関数です。まず、SHA-1について簡単におさらいしておきましょう。

SHA-1とは

SHA-1(Secure Hash Algorithm 1)は、米国のSecure Hash Standardに基づくハッシュアルゴリズムの一つです。RFC 3174には以下のように記述されています。

「SHA-1は160ビットの出力(メッセージダイジェスト)を生成します。このメッセージダイジェストは、たとえば署名アルゴリズムに入力され、メッセージに対する署名の生成や検証に利用できます。メッセージ本体ではなくメッセージダイジェストに署名を行うことで、ダイジェストは通常メッセージよりもはるかに小さいため、処理全体の効率が向上します。また、デジタル署名の検証者は、署名の作成者と同じハッシュアルゴリズムを使用しなければなりません。」

参照:RFC 3174

構文

sha1(str, raw)

パラメータ

  • str − ハッシュを計算する対象の文字列を指定します。必須のパラメータです。

  • raw − 出力形式を16進数にするかバイナリにするかを指定する真偽値。省略可能です。

  • TRUE − 生の20文字のバイナリ形式で出力します。

  • FALSE − 40文字の16進数で出力します(デフォルト値)。

戻り値

sha1()関数は、処理が成功した場合に計算済みのSHA-1ハッシュを返し、失敗した場合はFALSEを返します。

使用例①:基本的なハッシュ計算

以下は、文字列からSHA-1ハッシュを生成する基本的な例です。

<?php
$s = "Welcome";
echo sha1($s);
?>

出力結果

ca4f9dcf204e2037bfe5884867bead98bd9cbaf8

使用例②:ハッシュ値の比較

次の例では、計算したハッシュ値を既知の値と比較しています。

<?php
$s = "Welcome!";
echo sha1($s);
if (sha1($s) == "ca4f9dcf204e2037bfe5884867bead98bd9cbaf8") {
    echo "<br>Hello Welcome!";
    exit;
}
?>

出力結果

e52e5e6cd50ef4de30d8a4fafbbfab41180cc200

解説

この例では、変数$sに「Welcome!」という文字列が代入されています。「Welcome!」は「Welcome」と異なる文字列であるため、生成されるハッシュ値も異なります。その結果、if文の条件は成立せず、「Hello Welcome!」は出力されません。同一の入力文字列からは常に同一のハッシュ値が得られるという性質を利用すれば、データの改ざんチェックなどに応用できます。

セキュリティに関する注意点

SHA-1は現在、衝突攻撃(異なる入力から同じハッシュ値が生成される攻撃)が現実の脅威となっており、パスワードの保存や電子署名などのセキュリティ用途には推奨されていません。パスワードのハッシュ化にはpassword_hash()関数を、一般的なハッシュ計算にはhash('sha256', ...)など、より強力なアルゴリズムを使用することがベストプラクティスとされています。

  1. PHPのlog()関数とは?自然対数の計算方法と使い方を解説

    定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l

  2. PHPのerror_log()関数の使い方を徹底解説

    PHPのerror_log()関数は、発生したエラーをサーバーのエラーログ、任意のファイル、またはリモートの宛先へ送信するための関数です。デバッグや運用時のトラブルシューティングにおいて非常に便利な機能です。 構文 error_log(message, message_type, destination, extra_headers) パラメータ message − ログに記録したいエラーメッセージを指定します。 message_type − エラーの送信先を指定します。指定できるメッセージタイプは以下の通りです。 0 − デフォルト値です。php.iniファイルのerror_log設