0

PHP で次の呼び出しを行うと、パスワードとソルトを使用して sha512 で何度もハッシュします。

echo crypt('password', '$6$rounds=1000$salt');

しかし、このプロセスが実際にどのように機能するのだろうか。それはこのようなものですか?:

$hash = hash('sha512', 'password' . 'salt');
for ($i = 1; $i < 1000; $i++) {
    $hash = hash('sha512', $hash);
}
echo base64_encode($hash);

それとも本当に複雑なプロセスですか?

私が質問している理由は、他の言語で簡単に実装できる暗号ハッシュ システムが欲しいからです。

4

2 に答える 2

3

ここで実際の crypt() ソース コードを確認できます。

https://github.com/php/php-src/blob/master/ext/standard/crypt.c

とはいえ、他の人が指摘したように、パスワードをハッシュしている場合は、おそらく bcrypt を使用する必要があります。これは、パスワード ハッシュ手法に関する人気のある投稿です。

http://codahale.com/how-to-safely-store-a-password/

于 2012-07-02T10:52:01.070 に答える
1

さまざまな言語で実装するための強力なパスワード ハッシュ アルゴリズムを探している場合は、bcryptを使用してください。Java、C#、JavaScript、PHP、obj-C、Python、Perl などのライブラリがあります。

これがログイン フォームの場合は、JavaScript の bcrypt ライブラリを使用し、ハッシュをサーバーに送信することをお勧めします。これにより、サーバーに過負荷をかけたり、DoS 脆弱性を導入したりすることなく、作業要素を適度に大きくすることができます。

于 2012-07-02T10:50:14.600 に答える