2012-04-21 1 views
6

ハッシュするときにcrypt()アルゴリズムが使用するアルゴリズムがわかりません。私はPHPのマニュアルを見ましたが、利用可能なものは何でも使用しています。しかしどのように使用するのか、使用するのかをどのように使用するのかをどのように知るのですか?私は現在開発環境としてMAMPを使用していますが、PHPのステートメントで見つかる方法があるはずです。あなたのマシンでどのアルゴリズムcrypt()が使われているか調べるには?

+0

どの塩形を使用していますか? – CodesInChaos

+0

もしそれがあなたが求めているものなら、塩を提供する。 – Andy

+1

私が正しく覚えていれば、塩のフォーマットによってアルゴリズムチェックが決定されます。http://php.net/manual/en/function.crypt.php – CodesInChaos

答えて

9

ソルト文字列の一部としてアルゴリズムを指定します。たとえば、$2a$で始まると、Blowfishのサイファーが得られます。マシンが使用しようとしているアルゴリズムをサポートしていない場合、意味のある結果は得られません。 CRYPT_BLOWFISHのような定義済みの定数のいくつかをチェックすることで、どのアルゴリズムがサポートされているかを事前に調べることができますが、少なくともPHP 5.2では定数CRYPT_SHA256CRYPT_SHA512が常に定義されているわけではありません。 PHP 5.3以降、PHPには独自のアルゴリズムが実装されているため、PHP 5.2以前と同様に、コンパイル時にシステムが使用できるものであるかどうかは関係ありません。 PHP 5.2用のSuhosinパッチは少なくともBlowfishを追加すると思われますが、その実装はPHP 5.3で使用されているものと互換性がないようです。 - アルファベットから2文字のsalt と標準DESベースのハッシュ」

  • CRYPT_STD_DES:

    PHP docs for the crypt() functionは、使用するアルゴリズムを指定するには、塩の文字列を使用する方法についていくつかの情報を提供してください。/0-9A-Za-z」となる。塩で無効な文字を使用すると、crypt()が失敗します。

  • CRYPT_EXT_DES - 拡張DESベースの ハッシュ。 「塩」は、アンダースコアが で、その後に4バイトの反復カウントと4バイトの塩が続く9文字の文字列です。これらは、 が印刷可能な文字としてエンコードされています。文字あたり6ビットです。最初に有効文字は です。値0〜63は、 "./0-9A-Za-z"としてエンコードされています。塩に無効な文字を使用すると、crypt() が失敗します。
  • CRYPT_MD5 - $ 1 $
  • CRYPT_BLOWFISHで始まる12文字塩 とMD5ハッシュ - として塩とフグハッシングは、次のとおりです。 "$ 2aは$"、2桁のコストパラメータを、 "$"、および22桁 からアルファベット "./0-9A-Za-z"。 でこの範囲外の文字を使用すると、crypt()はゼロ長の文字列を返すようになります。 2つの 数値コストパラメータは、基礎となるBlowfishベースのハッシングアルゴリズムの反復回数 のベース2の対数であり、 の範囲04-31でなければなりません。この範囲を超えるとcrypt()が失敗します。
  • CRYPT_SHA256 - $ 5 $で接頭辞が の16文字のSHA-256ハッシュです。ソルト文字列が 'rounds = $'で始まる場合、 の値Nは、ブッシュフィッシュのコストパラメータと同様に、ハッシュループが実行されるべき回数を示すために使用されます( )。デフォルトの ラウンド数は5000、最小値は1000、最大値は 999,999,999です。この範囲外のNの選択は、 を最も近い制限に切り捨てられます。
  • CRYPT_SHA512 - $ 12 $の接頭辞を持つ 文字の塩が16のSHA-512ハッシュ。ソルト文字列が の 'rounds = $'で始まる場合、Nの数値は、Blowfishのパラメータ パラメータと同様に、ハッシュループを実行する必要がある回数を示すために使用されます( )。デフォルトのラウンド数は5000で、 は最小値で、最大値は999,999,999です。この範囲外のN の選択は、最も近い制限に切り捨てられます。だから、

は、XA86で始まる文字列は塩でどこに

crypt('password', '$2a$10$XA86t7EJ0xD9OYEUbnTulT'); 

を使用することができ、あなたは2^10回の反復でフグを使用してハッシュ文字列「パスワード」をすることを指定します。

最後に、さらに多くの例が必要な場合や、このパスワード互換ビジネスのすべてを世話したい場合は、phpassをご覧ください。パブリックドメインであり、私の経験でうまく動作します。複数のシステムと互換性のあるハッシュを指定する場合を除いて、自動的にシステム上で「最適な」アルゴリズムが使用されます。この場合、MD5が使用されます。

+0

そうです、それも私の問題でした。いくつかの奇妙な理由のために、実際には十分な情報がありません。 – Andy

+0

例えば、$ 2a $を使用してcryptにどのアルゴリズムを使用させるかを教えてもらう方法の例を教えてください。 – Andy

+0

はい、すぐに編集します。私はあなたが店でチェックアウトするために並んでいる間私の電話に入力していたので、あなたに前に多くの情報を与えることができませんでした。 – Andrew

関連する問題