SHA512 Password Encoder 구현
Spring Security에서는 Password Encoder를 사용하여 비밀번호를 암호화하여 저장한다. SHA-512 알고리즘을 사용하여 비밀번호를 암호화하는 Password Encoder를 구현해보자.
최신의 비밀번호 저장 방식에서는 BCrypt나 Argon2와 같이 내장된 솔트 처리 기능을 가진 알고리즘을 사용하는 것이 더 권장됩니다.
import org.springframework.security.crypto.password.PasswordEncoder
class Sha512PasswordEncoder : PasswordEncoder {
override fun encode(rawPassword: CharSequence?): String {
val md = MessageDigest.getInstance("SHA-512")
return BigInteger(1, md.digest(rawPassword.toString().toByteArray()))
.toString(16)
.padStart(128, '0')
}
override fun matches(rawPassword: CharSequence?, encodedPassword: String?): Boolean {
return encode(rawPassword) == encodedPassword
}
}