我有一个类,用于在我的应用程序的登录窗口中存储用户用户数据(用户ID和密码)。目前我使用SecureString存储密码,但在某些地方我需要原始密码来验证。 (那时必须是明文)
有没有人知道将它存储在内存中的安全方法,如果需要它可以很容易地重新转换为纯文本?
答案 0 :(得分:1)
看起来SecureString本身并不安全,并且有工具可以获取安全字符串。您可以编写自己的代码,加密字符串,分成几部分并存储它,但是如果您需要使用密码,例如数据库登录等,那么黑客可以找到并破坏您的代码。 安全性不是一点,因此代码混淆等许多事情都是有效的。 像SmartAssembly这样的工具可以通过自动加密来保护字符串。 另一个想法是存储散列,而不是密码本身,并且散列基本上是使用一些随机参数创建的,因此无法重新创建,一次性密码。
答案 1 :(得分:0)
考虑CryptProtectData():
http://www.pinvoke.net/default.aspx/crypt32.cryptprotectdata
它可以使用当前用户密钥或本地计算机密钥。在Web设置(即ASP.NET)中,您希望使用本地计算机。只要你有一个加密/解密的Web服务器。
答案 2 :(得分:-1)
您可以通过MD5加密密码并进行比较,您可以加密输入的数据并比较两个字符串