BCryptで安全にパスワードを保存する


パスワードを保存するには、SHAハッシュよりBCryptが良い

利点

  • レインボーテーブルアタックできない(同一のパスワードでも毎回異なるハッシュを生成)
  • ブルートフォースアタックに強い(計算量が多い)

セットアップ

依存関係にSpring Securityを追加する

// build.gradle
dependencies {
  compile "org.springframework.security:spring-security-core"
}

使い方

...
user.passwordHash = BCryptPasswordEncoder().encode(password)
user.save()
fun login(userId:String, password: String): Boolean {
  ...
  if(!BCryptPasswordEncoder().matches(password, user.passwordHash)){
    return false
  }
  return true
}

See also