web-dev-qa-db-ja.com

ハッシュされた文字列の形式

文字列をハッシュすると、次のような形式が表示されることがあります。

{SHA512}1G2zjh2Bso/LzS06JDLXcELCJX4TQm7oXL5Et3Yg4Veyji7iQW26VnBdEHiURM5evO6duJjzY5387mkWV0oiyYA=

具体的には、ハッシュ関数SHA512を示すセクション。

これは標準ですか? {}の間の可能な値について、どこかにドキュメントがありますか?

たとえば、bcryptを使用したい場合、そこに何を置きますか?

1
prajo

これは標準ではなく、実装固有です。これは、使用されたハッシュ関数を識別するためにパスワードをハッシュするライブラリによって使用されます。

たとえば、PHPこの形式を パスワードハッシュライブラリ で使用します:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
  • 2yは、PHPがbcryptアルゴリズムを使用したことを意味します。
  • 10は、文字列をハッシュするために使用されるコストです。
  • 文字列の残りの部分には、ソルト(使用されている場合)とハッシュ自体が格納されます。

これらのメタデータがあると、PHPは、スクリプトが呼び出したときに正しいアルゴリズム/コストを自動的に選択できます password_verify ユーザー指定の文字列を使用します。

1
Benoit Esnard