我对C#和加密比较陌生,所以请耐心等待。我正在开发一个业务应用程序(在C#,.NET 4.0,VS 2010中),它存储了大量数据,并且还必须能够读取大量数据并对其进行过滤以显示它(主要是在datagridview,有时只是一些计算...)。无论如何,数据需要加密,并且必须能够仅加密和解密部分数据文件(以便从随机位置写入和读取)。速度至关重要(用户不应等待数据加载和显示),安全性排在第二位。运行它的计算机将至少具有双核2.0+ Ghz,至少2GB RAM。
我考虑使用相对较大(约1MB)的xor pad,它将在运行时计算出来。我认为二进制结合xor的自定义文件设计应该提供相对较好的安全性和速度。但是现在我开始考虑使用更强大的东西,如果它仍然足够快,可能是AES(可能是.NET实现:Rijindael或Serpent或Twofish)。那么您认为最好的是什么?在这种情况下,其他公司/开发人员通常会使用什么? AES有多快/慢? I / O操作已经很慢了,我不知道AES是否会使事情变得更糟或者甚至不会被注意到。
或者你可能对如何快速加密数据有其他想法吗?
P.S。我知道如果某人成功(!)调试或反汇编代码,他就可以解密数据。
编辑:我只是为客户开发自定义应用程序,所以我不能强迫他们拥有更好的硬件,我可以推荐更好的硬件。我的软件将主要由3部分组成,POS,服务器和某种管理器。如果你认为我的第一个想法(某种类型的xor)是无用的并且我应该使用更好的加密,请至少尝试估计哪种硬件(最小)会提供所需的结果(“足够快”=解密不应该对数据显示的影响,例如,如果加载数据需要1秒并在datagridview中显示,则解密时不应超过1,2-1,3s。答案 0 :(得分:6)
安全第二
不要决定速度和安全性。尽量让它们兼得!
像Blowfish或Rijndael / AES这样的加密算法非常高效(see)。绝对投资更好的硬件!您的服务器设置并不是最先进的。事实上,我的笔记本电脑比服务器设置更强大;)
Hardware is much cheaper than developer hours。坚持使用标准和经过批准的加密技术!如果你的硬件是最先进的,并且你在加密/解密过程中仍然面临着瓶颈,那么就是时候摧毁你的大脑了。不是之前。
只需2美分。
<强>更新强>
绝对建议您的客户购买更好的硬件。我真的不能给你一个“什么硬件就足够了”的答案,因为你没有真正指定哪种速度可以接受哪种数据加密/解密(这真的很难答案因为它取决于很多因素)。我建议您(或您的公司)租用硬件来使用标准加密技术进行性能测试。找到具有满足其需求的良好性能的适当硬件设置后,请向您的客户提供这些性能测量。
答案 1 :(得分:4)
首先,您应该调查流行算法给出的开销是否真的会成为一个问题。 .NET中算法的实现很快,你应该能够处理50 - 400 MB / s的原始数据(自然是一个非常粗略的数字...... 微笑)。如果您的数据源是SQL查询(通常是这样),您通常会有一个数据源以更低的速率提供数据,从而限制了加密/解密的性能影响。
有关性能的详细信息,您必须在应用程序中进行试用。
我会买一些更好的硬件,而是专注于密钥管理和其他棘手的问题 - 否则如果设置太容易破解,可能会完全跳过加密。
答案 2 :(得分:0)
也许this article可以帮到你。
此外,你需要足够快地定义...使其可衡量,因为它是一个相对术语。