ホームページ  >  記事  >  バックエンド開発  >  PHPのハッシュ関数

PHPのハッシュ関数

PHPz
PHPzオリジナル
2024-08-29 12:47:031061ブラウズ

PHP のハッシュ関数は、事前に定義された特別なメソッドであり、文字列の文字から測定される明確な値の形式で文字列を示すために使用されます。これは、暗号化アルゴリズムとして、またデータベース内の項目のインデックス値表現としての用途で人気があります。データ暗号化のプロセスで最も一般的に使用されるハッシュ アルゴリズムのタイプは、SHA1() と MD5() です。 PHP では、ハッシュ関数には Hash_equals、Hash_final、Hash_init、Hash_copy の 4 つの異なるタイプがあります。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

ハッシュ関数はどのように機能しますか?

PHP はサーバーサイドのプログラミング言語であり、その主な役割は、特定のアプリケーションに必要なバックエンド機能を処理することです。脆弱性によってデータが簡単に悪用される可能性があるため、このプロセスでは認証が重要な役割を果たします。データを保護する 1 つの方法は、データを元の形式でデータベースに保存することですが、これにより、侵入者/権限のない人物が簡単にデータを取得し、データが侵害される可能性があります。この状況は、ハッシュ関数を使用することで簡単に処理できます。

ハッシュ関数は、データの意味を変えることなく、実際の形式でデータを暗号化します。したがって、ユーザーがデータをそのままの形式で入力すると、データはバックエンドで暗号化され、データ プロセスの認証と認可が行われます。最も一般的に使用されるハッシュ アルゴリズムは、md5 ()、sha1 () およびいくつかのハッシュ関数です。これらのアルゴリズムは、ユーザーが入力したデータが正しいかどうかを認証し、プロセスを続行するために開発者によって使用されます。

1. MD5()

このアルゴリズムは、md5 ハッシュ、つまり特定の文字列の 16 文字または 32 文字の 16 進数のハッシュを計算する強力なハッシュ アルゴリズムの 1 つです。渡されたこの文字列は、暗号化された 16 進形式に変換されます。

構文:

string md5 ($string, $getRawOutput)

上記の構文は、入力文字列として $string を示しました。開発者は 16 ビットまたは 32 ビットに変換したいため、生の出力はオプションの入力です。 16 ビットを有効にする必要がある場合は、TRUE ブール値に設定して関数に渡す必要があります。設定されていない場合は、デフォルトの 32 ビットが自動的に設定されます。

例:

md5 (EduCBA, TRUE)

2. SHA1 ()

このアルゴリズムは、sha1 ハッシュ、つまり特定の文字列の 20 文字のバイナリ形式または 40 文字の 16 進数のハッシュを計算する強力なハッシュ アルゴリズムの 1 つです。渡されたこの文字列は、暗号化された 16 進形式に変換されます。

構文:

string sha1 ($string, $getRawOutput)

上記の構文は、入力文字列として $string を示しました。開発者は 20 ビットまたは 40 ビットを希望するため、生の出力はオプションの入力です。 20 ビットを有効にする必要がある場合は、TRUE ブール値に設定して関数に渡す必要があります。設定されていない場合は、デフォルトの 40 ビットが自動的に設定されます。

例:

sha1 (EduCBA, TRUE)

PHP のハッシュ関数

以下にリストするのは、データを元の形式からハッシュ形式に暗号化/変換するために PHP で使用されるいくつかのハッシュ関数です。

1.ハッシュイコール

この関数は、2 つの文字列が等しいかどうかを同時に比較します。この関数は、文字列が等しい場合は TRUE を返し、文字列が等しくない場合は FALSE を返します。文字列を比較するには、両方の引数が同じである必要があります。そうでない場合は、文字列をアルファベット順に比較することもなく、すぐに false が返されます。また、タイミング攻撃の場合には文字列の長さも明らかになることもあります。

2.ハッシュ_最終

この関数は、この関数に渡された入力文字列のハッシュ ダイジェストを返します。生の出力が TRUE に設定されている場合は生のバイナリ データが提供され、FALSE に設定されている場合は小文字の 16 進数が提供されます。この関数は、計算された文字列の 16 進ダイジェストを出力として返します。

3.ハッシュ初期化

この関数は、md5 ()、sha () などのハッシュ アルゴリズムとともに使用されます。この関数は、ハッシュ アルゴリズムとともに、hash_update ()、hash Final () などで使用する出力を生成します。 hash_init は文字列または変数に格納され、いずれかの関数に渡されます。

4.ハッシュ_コピー

この関数は、ハッシュ コンテキストをコピーするために使用されます。関数への入力として渡される文字列は、 hash_init() 関数で使用されるアルゴリズムの 1 つによってハッシュされ、対応する出力は、この関数に渡されるハッシュされた文字列になります。この関数は、hash_init 関数によって与えられた出力のハッシュされた形式を返します。

Examples of Hashing Function in PHP

The following is a list of hashing function in PHP explained in detail,

Example #1

Code:

<?php
$c = hash_init("md5");
hash_update($c, "content");
$copy_c = hash_copy($c);
echo hash_final($c);
hash_update($copy_c, "content");
echo hash_final($copy_c), "\n";
?>

Output:

PHPのハッシュ関数

Example #2

Code:

<?php
$expected  = crypt('leela123', '$2a$07$user$');
$right   = crypt('leela123', '$2a$07$user$');
$wrong = crypt('leeeela233',  '$2a$07$usedwrongstring$');
var_dump(hash_equals($expected, $right));
var_dump(hash_equals($expected, $wrong));
?>

Output:

PHPのハッシュ関数

Example #3

Code:

<?php
$hash = hash_init('sha1');
hash_update($hash, 'This is an example of PHP Hash function');
echo hash_final($hash);
?>

Output:

PHPのハッシュ関数

Conclusion

In this article, we discussed what is hashing and its various algorithms. Also, we discussed a few hashing functions used in PHP to encrypt the data to prevent malicious and vulnerable attacks. Because of these attacks, the data is not secure and loss of data occurs. So, the hashing technique was introduced so that there will be no loss of data and it will be secured by various attacks.

以上がPHPのハッシュ関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP 文字列関数次の記事:PHP 文字列関数