2008-11-19 107 views
2

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

  1. 应该被哈希的东西。即密码

  • 东西不能被散列,但是极端保密,如果受损会造成巨大的痛苦。即信用卡,SSN,导引启动码。
  • 哪个加密算法最强,最推荐?你如何处理钥匙?

    回答

    2

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

    存储您的密钥是一个更加dicier的情况。我建议不要使用纯文本文件。有一些算法用于将加密密钥分成两半,以便分担责任。

    1

    关于哈希,内置的库用于执行散列操作(非常类似于加密库),可以非常简单地散列存储值。

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

    要考虑的另一件事是使用System.Security.SecureString将这些受保护的值在内存中未加密/解除加密。使用标准字符串意味着包含在字符串中的数据以纯文本格式存在堆中,并且即使在字符串超出作用域后,实际上也可能会保留一段时间。如果有人可以从机器中获取内存转储,他/她可能会提取未受保护的数据。在某些情况下,这可能是矫枉过正的,但需要注意的地方。

    相关问题