如何在客户端散列密码?如何从 java 设备(android)传输密码?

how to hash password on client side? how to transmit password from java device(android)?

我们的服务器上没有明文密码,我们想散列用户在应用程序上输入的内容,然后将其发送到服务器。(我们通过 https 发送)

我们有 md5(passwrod) 没有在服务器上加盐,但我们尽快将其更改为 md5(password+salt) 或 md5(md5(password)+salt) 如果它是安全的! 我读了这个问题: Is it worth hashing passwords on the client side

但是有一个问题。如果服务器因为下面这篇文章 "In a Web Application, always hash on the server" 标题而向应用程序发送 salt,则这是不安全的 https://crackstation.net/hashing-security.htm

所以如果我向服务器发送 md5(密码+随机位)+ 随机位。服务器无法识别密码是否正确!因为服务器只有密码哈希值!

MD5 对于密码散列(). Instead, I recommend using the bcrypt 算法永远不安全。 在服务器端执行散列操作确实是个好主意,因此您应该依赖传输层的安全性,例如使用 SSL 而不是 TCP(或 HTTPS,正如您已经在做的那样)。

通常,您在服务器端存储身份验证哈希,并将其与根据用户输入的密码在客户端生成的哈希相匹配。从登录表单中获取原始哈希值。 Post 如果您需要更具体的帮助,请提供一些代码。希望对您有所帮助。