我正在开发Android应用程序,我想提交用户名和密码。我现在正在做的是:
为密码创建哈希值
通过HTTP请求连接到身份验证服务器
通过ObjectOutputStream发送用户名/ hash-password
我这样做是因为这是我能用自己所获得的知识实现自己的唯一解决方案。
但当然有一个问题我不得不担心:这有多安全?我知道,没有100%的安全性。但这是一个非常糟糕的解决方案,还是平均?
答案 0 :(得分:1)
这不安全,因为登录/密码未加密。你应该做的事情是:
盐: 如果两个用户拥有相同的密码,他们也会有相同的哈希值。这可以使用彩虹表(Google for Google)轻松恢复。为了避免密码应该用一些盐进行哈希处理,所以不要使用:
hash(password);
您应该使用:
hash(salt+password);
其中salt可以是一些非常长的随机字符串,在应用程序中硬编码(防止彩虹攻击)或只是用户名,因为它可以在服务器端和应用程序端轻松访问。