PHPチュートリアル

PHPホーム PHPイントロ PHPインストール PHP構文 PHPコメント PHP変数 PHPエコー/印刷 PHPデータ型 PHP文字列 PHP番号 PHP数学 PHP定数 PHP演算子 PHP If ... Else ... Elseif PHPスイッチ PHPループ PHP関数 PHP配列 PHPスーパーグローバル PHP正規表現

PHPフォーム

PHPフォーム処理 PHPフォームの検証 PHPフォームが必要 PHPフォームのURL / Eメール PHPフォームの完了

PHP Advanced

PHPの日付と時刻 PHPインクルード PHPファイルの処理 PHPファイルのオープン/読み取り PHPファイルの作成/書き込み PHPファイルのアップロード PHPクッキー PHPセッション PHPフィルター PHPフィルターアドバンスト PHPコールバック関数 PHP JSON PHPの例外

PHPOOP _

PHPOOPとは PHPクラス/オブジェクト PHPコンストラクター PHPデストラクタ PHPアクセス修飾子 PHPの継承 PHP定数 PHP抽象クラス PHPインターフェース PHPの特性 PHP静的メソッド PHPの静的プロパティ PHP名前空間 PHPIterables

MySQLデータベース

MySQLデータベース MySQLコネクト MySQL Create DB MySQLテーブルの作成 MySQLの挿入データ MySQLは最後のIDを取得します MySQL Insert Multiple MySQLを準備しました MySQL Select Data MySQL Where MySQL Order By MySQLデータの削除 MySQLアップデートデータ MySQL制限データ

PHP XML

PHPXMLパーサー PHPSimpleXMLパーサー PHPSimpleXML-取得 PHP XMLExpat PHP XML DOM

PHP -AJAX

AJAXイントロ AJAX PHP AJAXデータベース AJAX XML AJAXライブ検索 AJAXポール

PHPの

PHPの例 PHPコンパイラ PHPクイズ PHP演習 PHP証明書

PHPリファレンス

PHPの概要 PHP配列 PHPカレンダー PHPの日付 PHPディレクトリ PHPエラー PHP例外 PHPファイルシステム PHPフィルター PHP FTP PHP JSON PHPキーワード PHP Libxml PHPメール PHP数学 PHPその他 PHP MySQLi PHPネットワーク PHP出力制御 PHP正規表現 PHP SimpleXML PHPストリーム PHP文字列
addcslashes() addlashes() bin2hex() チョップ() chr() チャンクスプリット() convert_cyr_string() convert_uudecode() convert_uuencode() count_chars() crc32() crypt() エコー() explode() fprint() get_html_translation_table() hebrev() hebrevc() hex2bin() html_entity_decode() htmlentities() htmlspecialchars_decode() htmlspecialchars() implode() 加入() lcfirst() レーベンシュタイン() localeconv() ltrim() md5() md5_file() metaphone() money_format() nl_langinfo() nl2br() number_format() words() parse_str() print() printf() quoted_printable_decode() quoted_printable_encode() quotemeta() rtrim() setlocale() sha1() sha1_file() 類似のテキスト() soundex() sprintf() sscanf() str_getcsv() str_ireplace() str_pad() str_repeat() str_replace() str_rot13() str_shuffle() str_split() str_word_count() strcasecmp() strchr() strcmp() strcoll() strcspn() strip_tags() stripcslashes() stripslashes() 漫画 () ストリップ() strlen() strnatcasecmp() strnatcmp() strncasecmp() strncmp() strpbrk() strpos() strrchr() strrev() strripos() strrpos() strspn() strstr() strtok() strtolower() strtoupper() strtr() substr() substr_compare() substr_count() substr_replace() トリム() ucfirst() ucwords() vfprintf() vprintf() vsprintf() ワードラップ()
PHP変数の処理 PHPXMLパーサー PHP Zip PHPタイムゾーン

PHP crypt()関数


❮PHP文字列リファレンス

定義と使用法

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

この関数は、オペレーティングシステムによって動作が異なります。PHPは、使用可能なアルゴリズムと、インストール時に使用するアルゴリズムをチェックします。

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

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

定数:

  • [CRYPT_STD_DES]-アルファベット「./0-9A-Za-z」からの2文字のソルトを含む標準のDESベースのハッシュ。ソルトに無効な文字を使用すると、この関数は失敗します。
  • [CRYPT_EXT_DES]-アンダースコアとそれに続く4バイトの反復カウントと4バイトのソルトで構成される9文字のソルトを使用した拡張DESベースのハッシュ。これらは印刷可能な文字としてエンコードされ、1文字あたり6ビット、最下位文字が最初になります。値0〜63は、「。/0-9A-Za-z」としてエンコードされます。ソルトに無効な文字を使用すると、関数が失敗します。
  • [CRYPT_MD5]-$ 1 $で始まる12文字のソルトを使用したMD5ハッシュ
  • [CRYPT_BLOWFISH]-$ 2a $、$ 2x $、または$ 2y $で始まるソルト、2桁のコストパラメーター「$」、アルファベットの22文字「./0-9A-Za-z」を使用したBlowfishハッシュ。アルファベット以外の文字を使用すると、この関数は長さゼロの文字列を返します。 「$」パラメーターは、基になるBlowfish-bashedハッシュアルゴリズムの反復回数の2を底とする対数であり、範囲は04〜31である必要があります。この範囲外の値は、関数が失敗する原因になります。
  • [CRYPT_SHA_256]-$ 5 $で始まる16文字のソルトを持つSHA-256ハッシュ。ソルト文字列が「rounds = <N> $」で始まる場合、Blowfishのコストパラメータと同様に、Nの数値を使用してハッシュループを実行する回数を示します。デフォルトのラウンド数は5000で、最小は1000、最大は999,999,999です。この範囲外のNを選択すると、最も近い制限に切り捨てられます。
  • [CRYPT_SHA_512]-$ 6 $で始まる16文字のソルトを持つSHA-512ハッシュ。ソルト文字列が「rounds = <N> $」で始まる場合、Blowfishのコストパラメータと同様に、Nの数値を使用してハッシュループを実行する回数を示します。デフォルトのラウンド数は5000で、最小は1000、最大は999,999,999です。この範囲外のNを選択すると、最も近い制限に切り捨てられます。

この関数が複数のアルゴリズムをサポートしているシステムでは、上記の定数は、サポートされている場合は「1」に設定され、サポートされていない場合は「0」に設定されます。

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


構文

crypt(str,salt)

パラメータ値

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


技術的な詳細

戻り値: エンコードされた文字列または13文字より短く、失敗時にソルトとは異なることが保証されている文字列を返します
PHPバージョン: 4歳以上
変更ログ: PHP 5.6.0- saltが省略されている場合、E_NOTICEセキュリティ警告を表示します。
PHP 5.3.7- $ 2x $および$ 2y $ Blowfishモードが追加されました。
PHP5.3.2-SHA-256とSHA-512を追加しました。無効なラウンドでのBlowfishの動作が、DESにフォールバックする代わりに、「失敗」文字列(「* 0」または「* 1」)を返す問題を修正しました。
PHP 5.3.0-PHPには、MD5暗号化、標準DES、拡張DES、およびBlowfishアルゴリズムの独自の実装が含まれ、システムが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 $6$. 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文字列リファレンス