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

たぶん成功。こんな感じでハッシュ化してやろう。それともまだ危ないかな?