我们目前正在开发 .Net 中的 Web 应用程序,该应用程序还将有 Android、iPhone 和 Windows Mobile 8 应用程序来占用它。所有这些应用程序都需要有一个统一的登录系统。我们的网站和网络服务将使用 SSL,但显然我们想尽一切努力确保用户密码安全。因此,我们正在寻找可在上述平台中使用的通用密码哈希函数。
目前我们发现的唯一常见的是 SAH256,但我想使用更强大的东西。 C# 有我想使用的 Rfc2898DeriveBytes 类(并且可以在网站和 Win8 Mobile 中使用)但是是否有针对 Android/Java 和 iOS/Objective C 的任何实现?如果无法使用,我们的下一个最佳选择是什么?
最佳答案
在存储用户密码并在登录尝试期间进行比较时,应在后端使用密码哈希函数。
登录场景:
用户通过您的应用版本之一通过 SSL 发送密码。
后端服务器对用户发送的密码进行哈希处理,从数据存储中检索存储的哈希值,将发送的密码哈希值与存储的哈希值进行比较。
哈希匹配,允许用户访问,否则拒绝访问。
SSL 加密可防止密码在客户端传输过程中泄露,将密码存储为哈希值可防止在您的数据库遭到破坏时泄露用户密码。
使用此场景,由于哈希全部在后端服务器完成,因此只需要哈希算法的一种实现。
关于c# - 跨多个平台(Android、Phone、W8M)的密码散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917188/