DBへのパスワード保存方法
RubyからDBを操作できる環境が整ったのでどんなもんかとコーディングしています。シンプルに記述できるのでいいですね。
さて、Webアプリケーションを作成するにあたってDBへのパスワード格納をどうするか考えていたのですが、調べていくうちになんとなく分かってきました。
- パスワードはハッシュ化して格納
- ハッシュアルゴリズムはSHAの方が良さそう
- saltを付加してハッシュ化する
ハッシュ化されたパスワードが漏洩した場合でもsaltを付加してハッシュ化しておけばパスワードの解読が困難になるわけですね。なるほど。
文字列をハッシュ化して表示してみる
#!/usr/bin/ruby require 'digest/sha1' password = "abc123" salt = "hfgrtw" print "Content-type: text/html\n\n" print "<html><body>" print Digest::SHA1.hexdigest(password.concat(salt)) print "</body></html>"
何かしら16進数で表示されるはず
7c8c4ece87e7e6713bf0e77f8e7123627992a38a
たぶん成功。こんな感じでハッシュ化してやろう。それともまだ危ないかな?