gpt4 book ai didi

java - 如何在 Ktor 中散列和验证密码?

转载 作者:行者123 更新时间:2023-12-02 12:57:12 25 4
gpt4 key购买 nike

我是 Kotlin 和 Ktor 的新手,当我尝试为我的 Web 应用程序实现身份验证时,我需要为用户存储密码。但是,我似乎无法通过 Ktor Core 或外部 java 依赖项找到一种方法来散列密码并验证它们。

我找到了一些关于如何使用 BCrypt 或 PBKDF2 进行散列的文章,但这些文章要求我自己进行散列实现,这似乎并不安全,因为我将不得不担心维护它。

  • 有没有办法通过 Ktor 散列密码并验证它们? (类似于 PHP 的 password_hash()password_verify())
  • 如果没有,您能否推荐一个信誉良好且维护良好的 Gradle 依赖项?
  • 或者我如何进行自定义实现并确保它是安全的?
  • 最佳答案

    我用过 jBCrypt像这样:
    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
    注意: jBCrypt 盐与密码哈希中的一些元数据一起保存。例子:
    salt=$2a$10$e9kAuRN/PARzXnNdnghiSO
    hash=$2a$10$e9kAuRN/PARzXnNdnghiSOjfShrH9rrGQtfrAIj06LZ7ZW1MW7bEy

    关于java - 如何在 Ktor 中散列和验证密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60352285/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com