11

PHP の出力の長さはcrypt()?

md5()出力は 128 ビットで、32 文字の文字列を生成するため、データベースではそれをchar(32)列に入れcrypt()ます。

4

4 に答える 4

21

注:そのように質問することは完全に制限されています。http://php.net/cryptを参照してください。

詳細:

  • 成功すると、返される文字列の長さは 13 から 123 の間で変動します。
  • 出力の長さは、使用されるハッシュ アルゴリズムによって異なります。あなたの質問では未定義のままです。
  • 出力の長さは、関数に渡されるソルトによって異なります。あなたの質問では未定義のままです。
  • cryptハッシュされた文字列または 13 文字より短く、失敗時にソルトと異なることが保証されている文字列を常に返します。

例:

簡単なcrypt呼び出しと、標準の DES ベースのハッシュに対する有効な 2 文字のソルトから簡単に始めましょう。

 13 :: 2 (salt) + 11 (hash - 64 bits, base 64)

PHPcryptと特に MD5 (ここでは、md5crypt、MD5(Unix)、FreeBSD MD5、Cisco-IOS MD5、Hashcat モード 500 のほうが適切な名前) と空のソルトを使用する場合、出力の長さは次のようになります。

 26 :: 3 (`$1$`) + 0 (empty salt) + 1 (`$`) + 22 (hash - 128 bits, base 64)

PHP のcryptデフォルトが前述の MD5 であり、ソルトを指定せずに呼び出されるシステムでは、ソルトcryptが生成されます。このソルトの長さは通常 8 文字です。出力の長さは次のとおりです。

 34 :: 3 (`$1$`) + 8 (salt) + 1 (`$`) + 22 (hash)

この場合、データベース テーブルの列char(32)は、使用しているデータベース サーバーに応じて、挿入または切り捨てでエラーを報告します。

しかし、MD5 の例は意味がありません。質問に記載されているため、私はそれを選びましたが、MD5 を使用しないでcryptください (参照: Md5crypt パスワード スクランブラーは作成者によって安全と見なされなくなりました)。

代わりに、Blowfish ハッシュ ( CRYPT_BLOWFISH) を見てみましょう。これには 2 桁のコストパラメータがあり、ソルトの長さは常に 22 です (より短いソルトが指定された場合は、$s でパディングされます)。

 60 :: 4 (`$2y$`) + 3 (cost `$`) + 22 (salt) + 1 (`$`) + 53 (hash)

Blowfish crypt ハッシュ アルゴリズム (bcrypt、OpenBSD Blowfish、Hashcat モード 3200) の場合、固定長は 60 です。

ご覧のとおり、出力の長さは、使用されているハッシュ アルゴリズム、ソルトの長さ、さらにはcostなどのハッシュ固有のパラメーターによって異なります。

たとえば、999 999 999 ラウンドと 16 バイト長のソルトで SHA512 を選択した場合、出力の長さは次のようになります。

123 :: 3 (`$6$`) + 17 (`rounds=999999999$`) + 16 (salt) + 1 (`$`) + 86 (hash)

この例は、画像を示すためだけに、少し極端かもしれません。


その他のcrypt関連する質問:

于 2012-11-04T21:16:06.077 に答える
0

ハッシュされた文字列、または 13 文字より短く、失敗時にソルトと異なることが保証されている文字列を返します。

crypt() は、標準の Unix DES ベースのアルゴリズムまたはシステムで利用可能な代替アルゴリズムを使用して、ハッシュされた文字列を返します。

一部のオペレーティング システムでは、複数の種類のハッシュがサポートされています。実際、標準の DES ベースのアルゴリズムが MD5 ベースのアルゴリズムに置き換えられることがあります。ハッシュ タイプは、salt 引数によってトリガーされます。5.3 より前のバージョンでは、PHP はシステムの crypt() に基づいて、インストール時に利用可能なアルゴリズムを決定していました。ソルトが指定されていない場合、MD5 crypt() の可用性に応じて、PHP は標準の 2 文字 (DES) ソルトまたは 12 文字 (MD5) のいずれかを自動生成します。PHP は、CRYPT_SALT_LENGTH という名前の定数を設定します。これは、使用可能なハッシュで許可される最長の有効なソルトを示します。

続きを読む: http://php.net/crypt

于 2012-11-04T21:19:09.007 に答える
0

ドキュメントでわかるように、'''crypt()''' 関数はさまざまなハッシュ アルゴリズムで使用されます。したがって、長さは異なる場合があり、ドキュメントに記載されている定数によって決定されるデフォルトのハッシュ アルゴリズムに依存します。

于 2012-11-04T21:19:29.830 に答える
0

crypt() は、利用可能な暗号化方法に依存しています。PHP の最も一般的な方法は、常に 32 文字を返す MD5 です。DES や Blowfish などの他のメソッドは、可変長の文字列を返します。

サーバーで crypt() 関数が使用しているメソッドを知る必要があります。

于 2012-11-04T21:20:18.023 に答える