パスワードを保存するには、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
}