最新のWeb開発のチュートリアル
×

PHP チュートリアル

PHP HOME PHP イントロ PHP インストール PHP 構文 PHP 変数 PHP エコー/印刷 PHP データの種類 PHP ストリング PHP 定数 PHP 演算子 PHP If...Else...Elseif PHP Switch PHP whileループ PHP Forループ PHP 機能 PHP 配列 PHP 配列のソート PHP スーパーグローバル

PHP 取り扱い

PHP フォーム 取り扱い PHP フォーム 検証 PHP フォーム 必須 PHP フォーム URL/E-mail PHP フォーム コンプリート

PHP 高度な

PHP 多次元配列 PHP 日時 PHP 含めます PHP ファイル 取り扱い PHP ファイル オープン/読みます PHP ファイル 作成/書きます PHP ファイル アップロード PHP Cookies PHP Sessions PHP フィルター PHP Filters 高度な PHP エラー 取り扱い PHP 例外

MySQL Database

MySQL データベース MySQL 接続 MySQL Create DB MySQL Create 表 MySQL Insert Data MySQL 最後のIDを取得します MySQL 複数の挿入 MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML パーサー PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX イントロ AJAX PHP AJAX データベース AJAX XML AJAX ライブ検索 AJAX RSSリーダー AJAX 世論調査

PHP Examples

PHP 例 PHP クイズ PHP 証明書

PHP 参照

PHP アレイ PHP カレンダー PHP 日付 PHP ディレクトリ PHP エラー PHP ファイルシステム PHP フィルタ PHP FTP PHP HTTP PHP Libxml PHP 郵便物 PHP 数学 PHP その他 PHP MySQLiを PHP SimpleXML PHP 文字列 PHP XML PHP Zip PHP 時間帯

 

PHP crypt() Function


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

定義と使用法

crypt()関数は、DES、フグ、またはMD5アルゴリズムを使用してハッシュ文字列を返します。

この機能は、異なるオペレーティングシステム上で異なる動作をします。 PHPは、アルゴリズムが利用可能であり、それがインストールされている場合、どのようなアルゴリズムを使用するかをチェックします。

塩のパラメータはオプションです。 しかし、 crypt() 、塩なしで脆弱なパスワードを作成します。 セキュリティを強化するために十分な強塩を指定してください。

一緒に使用されるいくつかの定数があるcrypt()関数が。 それがインストールされている場合、これらの定数の値は、PHPで設定されています。

定数:

  • [CRYPT_STD_DES] -アルファベットから2つの文字のsaltと標準DESベースのハッシュ"./0-9A-Za-z" 。 塩で無効な文字を使用すると、この関数は失敗します。
  • 【CRYPT_EXT_DES] - 反復回数の4バイトと塩の4つのバイトが続くアンダーからなる9つの文字塩とDESベースのハッシュを拡張しました。 これらは、最初の印刷可能文字、文字当たり6ビット、最下位文字として符号化されます。 0〜63の値は、次のように符号化される"./0-9A-Za-z" 。 塩で無効な文字を使用すると、関数が失敗する原因になります。
  • [CRYPT_MD5] - MD5 $ 1 $で始まる12文字のsaltをハッシュ化
  • [CRYPT_BLOWFISH] - $ 2A $、$ 2倍の$で始まる塩とフグハッシュ、または$ 2Y $、2桁のコストパラメータ"$" 、およびアルファベットから22文字"./0-9A-Za-z" 。 アルファベットの外の文字を使用すると、この関数は長さゼロの文字列を返すようになります。 "$"のパラメータは、基礎となるフグ-ボコボコハッシングalgorithmeterのための反復回数の2を底とする対数で、範囲04から31でなければなりません。 この範囲外の値は、関数が失敗する原因になります。
  • [CRYPT_SHA_256] - $ 5 $で始まる16文字の塩とSHA-256ハッシュ。 塩文字列で始まる場合は"rounds=<N>$" 、Nの数値は、ハッシュ・ループがずっとフグのコストパラメータと同様に、実行されるべき回数を示すために使用されます。 ラウンドのデフォルト数は5000で、1000の最小値と999,999,999の最大値があります。 この範囲外のNのいずれかの選択は、最も近い限界まで切り詰められます。
  • 【CRYPT_SHA_512] - $ 6 $で始まる16文字の塩とSHA-512ハッシュ。 塩文字列で始まる場合は"rounds=<N>$" 、Nの数値は、ハッシュ・ループがずっとフグのコストパラメータと同様に、実行されるべき回数を示すために使用されます。 ラウンドのデフォルト数は5000で、1000の最小値と999,999,999の最大値があります。 この範囲外のNのいずれかの選択は、最も近い限界まで切り詰められます。

この機能は、複数のアルゴリズムをサポートするシステムでは、上記の定数は次のように設定されている"1"サポートされている場合と"0" 、さもなければ。

Note:何の復号化機能はありません。 crypt()関数は、一方向のアルゴリズムを使用しています。


構文

crypt( str,salt )

パラメーター 説明
str 必須。 ハッシュされる文字列を指定します
salt 任意。 ハッシュを上の基になるsalt文字列

技術的な詳細

戻り値: エンコードされた文字列または13文字未満であると、障害に塩と異なることが保証された文字列を返します。
PHPバージョン: 4+
変更履歴: $ 2倍の$と$ 2Y $フグのモードは、潜在的に高いビットの攻撃に対処するためにPHP 5.3.7で追加されました。

定数SHA-256およびSHA-512は、PHP 5.3.2で追加されました。

PHP 5.3.2の時点では、無効なラウンドのフグの挙動を返し"failure"の文字列("*0" or "*1")の代わりにバックDESに落下するのを、。

PHP 5.3.0の時点で、PHPはMD5の暗号のための独自の実装が含まれている、標準のDESは、DESおよびフグのアルゴリズムを拡張し、システムはアルゴリズムの一つ以上のサポートが不足している場合は、その使用されます。

例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.";
}
?>

上記のコードの出力があってもよい(depending on the operating system)

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の文字列のリファレンス