2014-09-25 84 views
2

我使用CryptoStream类来加密文本。如果我想解密它,我必须知道密钥和iv,所以我可以回到原始文本,但我在哪里保存它们,以便它们不会被盗?加密和解密文本的安全方法?

使用诸如作弊引擎等工具,您可以从其他程序的RAM中读取值,并且当我将key/iv保存在变量中时,您也可以读取它们。 有没有办法来防止呢? 有没有办法在SecureString中立即保存解密文本?所以它永远不会保存为一个普通的字符串?

(我不知道用C#相关的安全任何东西。如果任何人都可以推荐一个速成班或一本书,我会很感激!)

+0

什么应用程序类型这是什么? ASP,WPF等? – 2014-09-25 12:29:48

+0

Windows Presentation Foundation – MrApfelstrudel 2014-09-25 12:33:21

回答

1

您可以使用一个工具,如Dotfuscator的http://www.preemptive.com/products/dotfuscator/overview混淆你的源代码(免费版包含在Visual Studio中,但您需要专业版来加密字符串)。这将防止恶意用户反编译您的代码并查看密钥/ iv。

另一种选择是使用.NET DPAPI,如http://weblogs.asp.net/jongalloway/encrypting-passwords-in-a-net-app-config-file所示。如果您使用此系统,则需要确保将密钥/ iv放置在app.config文件中并在部署生成之前加密。

据我所知,没有办法阻止未加密的值被读入内存,毕竟,您的程序需要将这些值发送到处理器。

MSDN有安全的发展实践良好的速成班,应可帮助您开始:http://msdn.microsoft.com/en-us/security/aa570401.aspx