加密GAE的纯文本密码<> Android通讯

时间:2010-08-27 16:33:14

标签: android google-app-engine authentication encryption

我有一个Android应用程序,它与Google App Engine(GAE)后端进行通信。对于身份验证,我有一个用户名和密码,但我不想在客户端上存储纯文本密码,并在不安全的通道上以纯文本格式传输。因此,当用户第一次输入密码(注册或登录)并将其存储在手机以及GAE数据库中时,我正在考虑对密码进行哈希处理。但是,我不确定使用哪种加密哈希函数,目前正在考虑sha1(),如果我需要做其他事情或只需要sha1(plainTextPassword)

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

如果您要将密码的哈希值从客户端发送到服务器,并将其与存储在服务器上的密码的哈希值进行比较,则这不安全。

任何拦截散列的人都可以使用它来登录您的应用程序。对于您的应用程序,哈希实际上是一个密码。密码验证需要私有通道到经过身份验证的合作伙伴,例如SSH或TLS。

有人可能会争辩说,至少有助于保护可能共享相同密码的用户的其他帐户,但是没有盐的一轮SHA-1会使密码容易受到彩虹表和字典攻击的影响。使用PKCS#5中的密钥派生函数来正确隐藏密码; 8个随机字节的盐和几千次迭代是PBKDF1的良好参数。