我正在尝试使用Kotlin/Spring开发Rest。其中的JSON请求应该有一个使用Argon2id完成的散列密码。获得密码散列是相当直接和简单的!但是,我很困惑如何验证在JSON请求中接收到的内容是否正确。这是将它与一个普通字符串匹配。这就是我如何实现哈希。
val argon2PasswordEncoder = Argon2PasswordEncoder(64, 256, 4, 10240, 4)
val hashedPassword : String = argon2PasswordEncoder.encode(decryptedPassword)
println(hashedPassword)
现在,我可以将纯文本密码存储在Kotlin字符串中,并将其与散列密码相匹配,但我猜,这可能比加密的目的更重要!
我想的另一个选择可能是使用其他算法加密纯文本密码(比方说,我使用Jasypt)并将其存储在数据库中。然后当我收到请求时解密它,并将它与我收到的散列密码相匹配。但这似乎有点牵强,可能也是一个糟糕的设计!因为据我所见,Argon2PasswordEncoder
中有D2
方法,但是没有什么可解码的,它返回到一个字符串。有matches()
方法。但让我回想起我脑海中的问题。如何存储纯文本密码?
你能告诉我什么是最好的方法吗?Argon2是一个从开始的糟糕的选择吗?或者只是我缺乏知识。
任何指示都会有帮助。谢谢!
发布于 2022-09-27 09:13:42
使用密码哈希验证密码需要用户以明文形式提供密码。
如果您使用HTTPS (即HTTPS),这应该不是太大的问题。
或者,您可以在服务器上生成随机密钥(您说它是API),并将它们分发给您的用户。一些好处包括:
https://crypto.stackexchange.com/questions/102035
复制相似问题