在便携式应用程序中存储密码

Store password in portable application

我正在开发便携式应用程序。闪存驱动器上的东西,可以随时使用。

问题是:我需要在应用程序中存储一些关键密码。 所以我想问一下什么是正确的方法?

密码需要在应用旁边的 xml 设置文件中或其他地方,但在不同的计算机上使用时仍然需要加载设置。

但我希望用户无法轻松打开该设置文件(我可以使用设置加密文件吗?)然后我会使用一些 "decryption key" 作为密码,您每次想要进行更改或想要使用时都可以使用来自该文件或一些不同设置的密码。

这是正确的还是安全的?

我知道选项二是将密码以密码形式保存到设置 xml 文件中,但我希望人们在不知道密码的情况下无法打开该文件。

感谢所有的回答或想法。

第一种方式 - 使用密码加密您的配置。

1) 加密您的整个 XML 配置。
2) 在程序启动时请求密码。
3) 解密配置并加载它。

就这么简单。

您可以使用 RijndaelManaged 通过字符串密码加密您的设置。

已准备好实施字符串加密 can be found here

此外,我真的非常建议使用 SHA256/SHA512 对您的密码进行哈希处理,以使其更难为他人暴力破解。

优点:

  • 您不需要互联网访问。
  • 像这样破解加密需要 的时间(如果你使用得当的话)

缺点:

  • 任何人都可以暴力破解您的密码。所以用强一点的。

第二种方式 - 从网络服务器下载密码

设置一个将接受您的密码并发送密码列表的网络服务器。

始终使用 HTTPS! 您的所有 wifi 连接都可以 sniffed/or MITM 连接!

使用 SSL 固定 加强您的安全!你可以找到 more here.

优点:

  • 暴力破解你的密码真的很难。

(例如,将您的服务器端脚本设置为仅在您工作时才接受密码)

缺点:

  • 当然,您需要上网。
  • 您需要托管一个网站,获取 SSL 证书 (for example here, for free)
  • 有权访问您的网络服务器的人可以窃取您的密码。
  • 有权访问您设备的人可以安装伪造的根 SSL 证书来拦截您的流量。 (SSL 固定可以帮助你!)

我对这个问题的解决方法如下。

  • 加密整个设置文件(您可以创建自己的 加密功能)并创建一个小实用程序来更改设置。
  • 仅加密密码并使用一个小工具来 update/create一个密码