【问题标题】:how to hash password on client side? how to transmit password from java device(android)?如何在客户端散列密码?如何从java设备(android)传输密码?
【发布时间】:2015-10-17 07:18:11
【问题描述】:

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

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

但是有一个问题。如果服务器向应用程序发送盐,这是不安全的,因为这篇文章在“在 Web 应用程序中,总是在服务器上散列”标题下 https://crackstation.net/hashing-security.htm

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

【问题讨论】:

    标签: java security hash md5


    【解决方案1】:

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

    【讨论】:

    • 可以在我们的服务器中使用 bcrypt(salt+md5(password)) 然后我将 md5(password) 发送到 server.or bcrypt(salt+bcrypt(password)) 吗?!哈希安全文章认为这是不安全的!错误的方式:双重哈希和古怪的哈希函数!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-21
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多