在.NET中加密数据的最佳实践是什么?

时间:2008-11-19 18:48:54

标签: .net security encryption

处理

的最佳做法是什么?
  1. 应该散列的东西。即密码
    1. 那些不能被扼杀的东西,但是非常机密,如果受到损害会造成巨大的痛苦。即信用卡,SSN,导弹发射代码。
    2. 哪种加密算法最强,最推荐?你如何处理钥匙?

2 个答案:

答案 0 :(得分:2)

您可以在.Net中使用内置的加密库。有许多好的对称和非对称加密算法(AES,RSA等)。许多这些算法可以让你选择你想要的密钥强度(1024bit,2048bit等)。

存储密钥的情况更为严峻。我建议不要在纯文本文件中。有一些算法可以将加密密钥分成两半,以便分担责任。

答案 1 :(得分:1)

关于散列,有内置的库用于执行散列操作(很像加密库),这使得散列存储值非常简单。

除了查看这些库之外,还应考虑在哈希中添加“salt”,这实际上意味着在散列之前向正在散列的值添加一些额外数据,并添加额外的安全层。通过这种方式,即使攻击者知道您使用了哪种哈希算法,他们也不会轻易知道在对数据进行哈希处理之前如何对数据进行盐析。

要考虑的另一件事是使用System.Security.SecureString在内存中移动未加密/未加密的这些受保护值。使用标准字符串意味着字符串中包含的数据以纯文本形式存在于堆中,即使在字符串超出范围之后,实际上也可能保留一段时间。如果有人可以从机器中获取内存,他/她可能会提取未受保护的数据。在某些情况下,这可能是过度的,但需要注意的事项。