3

我正在制作一个 twitter 客户端,并且正在评估保护用户登录信息的各种方法。

  • 散列显然不这样做
  • 以可逆的方式混淆就像试图躲在我的手指后面
  • 纯文本听起来很混杂
  • 要求用户每次都输入他的密码会使应用程序厌烦

有任何想法吗 ?

4

6 回答 6

2

您可以进行一些操作系统调用来为您加密密码。

在 Windows 上:

  • 您可以加密文件(在 NTFS 文件系统上)
  • 使用C中的DPAPI
  • 通过使用ProtectedData类在 .Net 中使用 DPAPI
于 2008-10-22T12:09:25.917 回答
1

什么平台?

在 *nix 上,将密码以纯文本形式存储在主目录的子目录中 chmod 为 400 的文件中。参见例如 ~/.subversion。管理员无论如何都可以对用户做任何他们喜欢的事情,包括用他们自己的捕获密码的黑客版本替换你的程序,所以他们可以看到文件并没有什么坏处。请注意,取出该硬盘的人也可以访问该密码 - 如果这是一个问题,那么请让用户每次重新输入密码或检查此版本的 *nix 是否具有文件加密。

在 Windows Pro 上,将密码存储在加密文件中。

在 Windows 业余爱好者中,执行与 *nix 相同的操作。[编辑:正如 Aleris 建议的那样,CryptProtectData 看起来不错。如果它在所有 Windows 上都可用,那么它解决了仅支持加密文件的更昂贵版本的问题]。

在 Symbian 上,将密码存储在您的数据笼中。具有 AllFiles 权限的程序很少见,而且应该是值得信赖的,有点像 *nix 管理员。

于 2008-10-22T12:11:53.070 回答
1

CryptProtectData 是一个用于存储此类敏感数据的 windows 函数。

http://msdn.microsoft.com/en-us/library/aa380261.aspx

例如,看看 Chrome 如何使用它:
http ://blog.paranoidferret.com/index.php/2008/09/10/how-google-chrome-stores-passwords/

于 2008-10-22T12:13:31.290 回答
1

对于 Windows:使用 DPAPI(用户存储)加密密码并将其存储在您的设置文件或其他位置。这将在每个用户的基础上工作,例如,同一台机器上的不同用户将拥有不同的不相关的加密密钥。

于 2008-10-22T12:15:01.690 回答
0

你不能一边吃蛋糕一边吃。要么存储密码(您已排除),要么不存储并要求每次都输入密码(您已排除)。

于 2008-10-22T12:08:01.660 回答
0

拥有一个好的对称加密方案,它应该使解密不值得尝试的凭据变得足够困难。否则,如果服务只需要通过网络发送散列,您可以加密存储 hast。这样,即使是解密也不会让攻击者更接近解决方案。但是其他用户是真实的。如果您存储数据,则可以找到它。关键是在安全性和可用性之间找到平衡。

于 2008-10-22T12:14:14.750 回答