LoginSignup
0
1

More than 5 years have passed since last update.

Bcrypt のバージョンまとめ

Posted at

はじめに

Rails アプリを作っていると、BCrypt という単語をよく目にします。

しかし、BCrypt について書かれた日本語の記事は非常に少なく、$2a$$2x$ などいくつか存在するバージョンの違いがよくわかりませんでした。

それらについて、英語の文献を参照したため、日本語でまとめておこうと思います。

Bcrypt の バージョン

BCrypt を表すバージョンは、$2$ $2a$ $2b$ $2x$ $2y$ が存在するようです12

  • $2$ (Provos・Mazières, 1999)3 による最初の BCrypt 1
  • $2a$$2b$ のいくつかの実装に存在するセキュリティ上の問題を修正したバージョン1
  • $2x$ crypt_blowfish の $2a$ に存在していた問題を修正する前と同一のバージョン2
  • $2y$ crypt_blowfish の $2a$ に存在していた問題を修正した後と同一のバージョン2
  • $2b$ 公式の BCrypt の最も新しいバージョン1

crypt_blowfish における $2a$ の問題

crypt_blowfish の $2a$ には問題が存在していたことがあり、修正前後で動作が異なります。そのため、crypt_blowfish で作成された $2a$ の値については、それが修正前後のどちらで作成されたのかわかりません。

何が crypt_blowfish なのかはよくわかりませんでしたが、調べた範囲では PHP の crypt で使われるものが該当するようです。

どのバージョンを使うべきか

通常は $2a$ を使えば問題ないようです[^4]。

ただし、crypt_blowfish の修正前の $2a$ が混在している可能性が存在する場合は、$2y$ を使用するのが望ましいと思われます。

まとめ

  • BCrypt にはいくつかのバージョンが存在する
  • Rails では $2a$ を使えば(デフォルトのまま使えば)問題ない。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1