c# - 加密和解密文本的安全方法?

标签 c# wpf security encryption cryptostream

<分区>

我使用 CryptoStream 类来加密文本。如果我想解密它,我必须知道 key 和 iv,这样我才能取回原始文本,但是我应该把它们保存在哪里,这样它们才不会被盗呢?

使用 Cheat Engine 等工具,您可以从其他程序的 RAM 中读取值,当我将 key/iv 保存在变量中时,您也可以读取它们。 有没有办法防止这种情况发生? 有没有办法将解密的文本立即保存在 SecureString 中?所以它永远不会保存为纯字符串?

(我对与 c# 相关的安全性一无所知。如果有人可以推荐速成类(class)或书籍,我将不胜感激!)

最佳答案

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

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

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

MSDN 有一个很好的安全开发实践速成类(class),可以帮助您入门:http://msdn.microsoft.com/en-us/security/aa570401.aspx

关于c# - 加密和解密文本的安全方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26038457/

相关文章:

c# - 如何使用 autofixture 在子属性中自动设置父对象

c# - 为什么只有一些子元素的属性由其父元素定义

security - 安全启动和内核锁定之间有什么关系吗?

php - Android 到 PHP API 安全

c# - Visual Studio 2017 项目无法在 Mac 上的 Parallels Desktop 中运行/调试?

c# - Azure WCF 服务上的 maxReceivedMessageSize 太小

c# - 如何使用 DocumentFormat.OpenXml C# 获取 excel 工作表中的特定列?

WPF 滚动查看器 : Horizontal scrolling doesn't work

c# - 通过双击名称来更改 TabItem 的名称

security - 如果从 Windows 8 RTM 中设置的提升进程和非默认浏览器运行,ShellExecute 会失败