0

「秘密の」文字列をハッシュとしてデータベースに保存しています(データが侵害された場合)。私は bcrypt を使用していましたが、明らかに最初の 55 文字しか使用できないことがわかりました。基本的に、誰かがこれらの秘密の文字列を推測しようとします。私は現在、彼らの推測を​​ハッシュして、ハッシュされた「秘密」の文字列と比較しています。

これを行う最良の方法は何ですか?一部の文字列は最大 500 文字になるため、Bcrypt は機能しません。何か案は?

4

3 に答える 3

1

入力が推測可能な場合は、単純なハッシュ (MD5、SHA-1、または SHA-2) を使用しないでください。推測の検証は安価です。

簡単なトリックは、最初に SHA-256 で入力をハッシュし (32 バイトまたは 43 Base64 文字に削減)、次にそれに bcrypt を適用することです。

そうすれば、bcrypt は高価でソルト化されたものを処理し、SHA-256 は大きな入力を処理します。

https://security.stackexchange.com/questions/30315/fixing-the-high-bit-problem-in-phps-crypt-implementation/30326#30326を参照してください。

于 2013-02-11T09:41:54.373 に答える
0

私はMD5の大ファンです。これは、SHAよりも高速で、事実上元に戻すことはできません。チェックサムの比較として、ファイル全体を実行するために使用しました。さらに、PHPに組み込まれている関数です。

着信文字列をMD5して、データベースに保存されているMD5ed回答と比較するだけです。

MD5文字列の長さはわずか32文字です。データベースのサイズを抑えるのは素晴らしいことですが、2つの長い文字列が実際に同じMD5結果になる可能性がありますが、これは非常にありそうにありません。

于 2013-02-11T06:07:57.740 に答える
0

長さ制限のない対称暗号化アルゴリズムであるBlowfishの使用を試すことができます。

PHP Pear にはCrypt_Blowfishクラスの実装があります。

復号化する機能が必要ない場合は、 のようなものを使用することをお勧めしますSHA1。PHP もこれをサポートしています。

于 2013-02-11T05:38:29.527 に答える