はじめに この記事は Scala Advent Calendar(Adventar) の13日目です。パスワード保存に使うBCryptの話をします。 安全にパスワードを保存する 皆様、パスワードをセキュアに保存しているでしょうか?まさかとは思いますが、パスワードを生で保存するとかおぞましいことをしてないでしょうか? パスワードは攻撃者によってソースコード・DBすべて取得されたとしても、元のパスワードを類推することを不可能とするように保存することにより、パスワード漏洩最後の砦として機能させることが望ましいです。 この条件を満たす方法として、パスワードをHash化して保存する方法があります。ただし単純なHash化では駄目です。まず、類推されにくくて衝突しずらい、暗号学的に良いHash関数アルゴリズムが必要です。また、よくあるHash関数アルゴリズムは(元々高速に計算することを意図していたのもあ
![BCryptのすすめ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/7634c9f44bb1205c058a69ad97a2627fbb70de94/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QkNyeXB0JUUzJTgxJUFFJUUzJTgxJTk5JUUzJTgxJTk5JUUzJTgyJTgxJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz02NWFmMDM2MGVlMDdhMzE2M2JkMjBhMWYwYWE4M2Y3NA%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBwb25rb3R1eSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YzJkMzgzMTBhMWM2YzcyMTVlZTU3OGE1MDhjZGQ5ODY%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D0d19f50e616b06e59171ab8c3373e1e1)