9

私はメールサーバー用のWeb管理モジュールに取り組んでいます(ご覧になりたい場合はオープンソースです)。

そのためには、 Dovecotで読み取り可能なハッシュパスワードを生成できる必要があります。彼らのwikiで説明されているように、推奨されるパスワードハッシュスキームはSSHA256です(追加のSはソルト用です)。

また、これは次のPHPコードのようなもので実装するのがかなり簡単である可能性があることも説明されています。

$salt = 'generate_a_salt_somehow';
$hash = hash('sha256', $password . $salt);

ただし、暗号化について読んだことから、これはソルトハッシュを生成するためのかなりナイーブな方法ですが、ソースコードにAESを入力するときに間違った方法を使用している場合は、この場合も同じことが当てはまると思いました。

したがって、暗号化についての洞察があれば、mcrypt、mhashなど、これを行うための最も安全な方法について聞いてみたいと思います。

4

2 に答える 2

15

PHPのパスワード生成機能:

$hash = "{SSHA256}".base64_encode(hash('sha256', $password.$salt, true).$salt);

必然的に「真」-3番目のパラメータ...

于 2015-03-29T21:47:33.007 に答える
10

リンク先のDovecotwikiページでは、Dovecotが使用する正確なハッシュ形式について説明しています。この件に関しては選択の余地はありません。Dovecotはハッシュがどのように見えるかを期待しているため、ルールに従ってプレイする必要があります。

ほとんどのソルトパスワードスキーム(SMD5、SSHA *)では、ソルトはパスワードハッシュの後に保存され、その長さは変わる可能性があります。パスワードをハッシュするときは、プレーンテキストのパスワードの後に​​ソルトを追加します。例:SSHA256(pass、salt)= SHA256(pass + salt)+salt。

したがって、PHPの適切なパスワード生成関数は次のようになります。

$hash = "{SSHA256}" . base64_encode(hash('sha256', $password . $salt) . $salt);
于 2011-07-15T21:58:30.527 に答える