Latest web development tutorials
×

PHP コース

PHP コース PHP 簡単な紹介 PHP インストール PHP 文法 PHP 変数 PHP echo/print PHP データの種類 PHP 定数 PHP 文字列 PHP 演算子 PHP If...Else PHP Switch PHP 配列 PHP 配列のソート PHP スーパーグローバル PHP While 循環 PHP For 循環 PHP 関数 PHP マジック変数 PHP 名前空間 PHP オブジェクト指向の

PHP フォーム

PHP フォーム PHP フォーム認証 PHP フォーム - 必要なフィールド PHP フォーム - 確認メールおよびURL PHP 完全なフォームインスタンス PHP $_GET 変数 PHP $_POST 変数

PHP 応用チュートリアル

PHP 多次元配列 PHP 日付 PHP 含みます PHP ファイル PHP ファイルのアップロード PHP Cookie PHP Session PHP E-mail PHP セキュリティ E-mail PHP Error PHP Exception PHP フィルタ PHP 高度なフィルタ PHP JSON

PHP 7 新機能

PHP 7 新機能

PHP データベース

PHP MySQL 簡単な紹介 PHP MySQL 接続 PHP MySQL データベースの作成 PHP MySQL データテーブルを作成します。 PHP MySQL データを挿入 PHP MySQL 複数のデータの挿入 PHP MySQL プリペアドステートメント PHP MySQL データを読みます PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 簡単な紹介 AJAX PHP AJAX データベース AJAX XML AJAX 実時間探索 AJAX RSS Reader AJAX 投票

PHP リファレンスマニュアル

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 画像処理 PHP RESTful

PHPのcrypt()関数

PHPの文字列リファレンス PHPの文字列リファレンス

定義と使用法

地下室()関数は、文字列を暗号化するためのDES、フグ、またはMD5アルゴリズムの使用を返します。

異なるオペレーティングシステム、機能の異なる挙動に、いくつかのオペレーティングシステムは、アルゴリズムの複数のタイプをサポートします。 インストールする場合、PHPは、どのような利用可能であり、どのようなアルゴリズムアルゴリズムをチェックします。

正確なアルゴリズムは、salt引数の形式と長さに依存しています。 塩は、文字列を生成するために特定の暗号化方式で特定の文字列で数を増加させることにより、暗号化をより安全にすることができます。

ここではいくつかの定数とのcrypt()関数がで使用されています。 定数値は、PHPがインストール時に設定されています。

定数:

  • 【CRYPT_SALT_LENGTH] - 暗号化の長さをデフォルト。 標準のDES暗号化、2の長さを使用して、
  • 【CRYPT_STD_DES] - DES暗号化はアルファベットから、2文字の塩規格に基づきます「./0-9A-Za-z」。 塩に無効な文字が失敗した関数につながります。
  • 【CRYPT_EXT_DES] - DESベースの暗号化は、反復回数の4バイトと塩組成の4バイトの背後にあるアンダースコアで塩9文字を持っている拡張。 これらは、印刷可能な文字、6の各、最下位の文字としてエンコードされます。 0〜63の値が「./0-9A-Za-z」として符号化されます。 塩に無効な文字が失敗した関数につながります。
  • 【CRYPT_MD5] - MD5暗号化は、$ 1 $で始まる、塩12文字を持っています。
  • 【CRYPT_BLOWFISH] - Blowfishの暗号化は、同様に「./0-9A-Za-z "アルファベットから$ 2aは$、$ 2×$または$ 2yと塩の$始まり、二桁のコストパラメータ、" $ "を持っています22文字。 関数が0の文字列を返すトリガーするアルファベット文字以外に使用します。 "$"パラメータは、フグハッシュアルゴリズムは、04から31の範囲でなければなりません反復数の2を底とする対数です。 この範囲外の値は失敗した関数につながります。
  • 【CRYPT_SHA_256] - SHA-256暗号化は、$ 5 $で始まる、塩の16文字があります。 もし塩列"ラウンド= <N> $」が開始されると、N回のデジタル値ループを示すのに使用されるハッシュコストパラメータフグに類似しており、実行されます。 サイクルのデフォルトの数は5000であり、最小値は1000であり、最大値は999,999,999です。 Nは、この範囲外の値は、最も近い境界値に変換されています。
  • 【CRYPT_SHA_512] - SHA-512暗号化は$ 6 $で始まる、塩の16文字があります。 もし塩列"ラウンド= <N> $」が開始されると、N回のデジタル値ループを示すのに使用されるハッシュコストパラメータフグに類似しており、実行されます。 サイクルのデフォルトの数は5000であり、最小値は1000であり、最大値は999,999,999です。 Nは、この範囲外の値は、最も近い境界値に変換されています。

この関数は、複数のアルゴリズム・システムをサポートするには一定の上方にサポートされている場合、それ以外の場合は設定され、「1」に設定されている "0"

注:対応する復号機能はありません 地下室()関数は、一方向のアルゴリズムを使用しています。


文法

crypt( str,salt )

参数 描述
str 必需。规定要编码的字符串。
salt 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。

技術的詳細

戻り値: それが13未満の文字を返すことに失敗した場合は戻り値は、文字列を暗号化し、文字列の保証は塩とは異なります。
PHPバージョン: 4+
更新ログ: PHP 5.3.7では、高い潜在的な攻撃に対処するために$ 2倍の$と$ 2Y $フグモードを追加します。

PHP 5.3.2では、一定のSHA-256とSHA-512を追加します。

以降PHP 5.3.2以来、無効なループ内のふぐは、DESに戻って( "* 0"または "* 1")「失敗」の文字列を返すのではなく、します。

PHP 5.3.0から開始し、PHPは標準DES、フグを達成し、達成するためのDESアルゴリズムを拡張し、達成するためにMD5暗号化が付属しています。 システムがサポートしていない場合、これらのアルゴリズムは、PHP独自のアルゴリズムを使用します。


例1

この例では、異なるアルゴリズムをテストします。

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."n<br>";
}
else
{
echo "Standard DES not supported.n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."n<br>";
}
else
{
echo "Extended DES not supported.n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."n<br>";
}
else
{
echo "MD5 not supported.n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."n<br>";
}
else
{
echo "Blowfish DES not supported.n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."n<br>"; }
else
{
echo "SHA-256 not supported.n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

上記のコードは、(オペレーティングシステムによって異なります)、次が出力されます。

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.



PHPの文字列リファレンス PHPの文字列リファレンス