Java 如何在Ktor中散列和验证密码?
我是Kotlin和Ktor的新手,当我尝试为我的web应用程序实现身份验证时,我需要为用户存储密码。然而,我似乎找不到一种通过Ktor核心或外部java依赖项来散列密码并验证密码的方法 我找到了一些关于如何使用BCrypt或PBKDF2进行散列的文章,但这些文章要求我自己进行散列实现,这似乎不安全,因为我将不得不担心如何维护它Java 如何在Ktor中散列和验证密码?,java,gradle,kotlin,password-hash,ktor,Java,Gradle,Kotlin,Password Hash,Ktor,我是Kotlin和Ktor的新手,当我尝试为我的web应用程序实现身份验证时,我需要为用户存储密码。然而,我似乎找不到一种通过Ktor核心或外部java依赖项来散列密码并验证密码的方法 我找到了一些关于如何使用BCrypt或PBKDF2进行散列的文章,但这些文章要求我自己进行散列实现,这似乎不安全,因为我将不得不担心如何维护它 有没有办法通过Ktor散列密码并进行验证?(类似于PHP的password\u hash()和password\u verify()) 如果没有,你能推荐一个声誉良好且
- 有没有办法通过Ktor散列密码并进行验证?(类似于PHP的
和password\u hash()
)password\u verify()
- 如果没有,你能推荐一个声誉良好且维护良好的Gradle依赖关系吗
- 或者,我如何进行自定义实现并确保其安全
import org.mindrot.jbcrypt.BCrypt
...
fun setPassword(user: User) {
user.passwordHash = BCrypt.hashpw(password, BCrypt.gensalt())
}
build.gradle添加:
// current jbcrypt_version is 0.4
compile group: 'org.mindrot', name: 'jbcrypt', version: jbcrypt_version
创建用户数据库记录时,按如下方式保存密码哈希:
import org.mindrot.jbcrypt.BCrypt
...
fun setPassword(user: User) {
user.passwordHash = BCrypt.hashpw(password, BCrypt.gensalt())
}
检查密码时:
user = findUserByUsername(username=usernameToCheck)
if (!user)
return ...
if (!BCrypt.checkpw(user.passwordHash, passwordToCheck))
return ...
// user/password validated
注意:jBCryptsalt与一些元数据一起保存在密码散列中。例如:
salt=$2a$10$e9kAuRN/PARzXnNdnghiSO
hash=$2a$10$e9kAuRN/PARzXnNdnghiSOjfShrH9rrGQtfrAIj06LZ7ZW1MW7bEy
以下是bcrypt的Java库:。自述文件中有很多关于如何正确使用它的信息。这似乎不适用于使用PHPpass的wordpress。编译是过时的,您应该使用实现