什麼是處理的最佳實踐在.NET中加密數據的最佳做法是什麼?
- 應該被哈希的東西。即密碼
和
- 東西不能被散列,但是極端保密,如果受損會造成巨大的痛苦。即信用卡,SSN,導引啓動碼。
哪個加密算法最強,最推薦?你如何處理鑰匙?
什麼是處理的最佳實踐在.NET中加密數據的最佳做法是什麼?
和
哪個加密算法最強,最推薦?你如何處理鑰匙?
在.Net中可以使用加密庫。有許多好的對稱和非對稱加密算法(AES,RSA等)。這些算法中的很多都可以讓你選擇你想要的密鑰有多強(1024bit,2048bit等)。
存儲您的密鑰是一個更加dicier的情況。我建議不要使用純文本文件。有一些算法用於將加密密鑰分成兩半,以便分擔責任。
關於哈希,內置的庫用於執行散列操作(非常類似於加密庫),可以非常簡單地散列存儲值。
除了查看這些庫之外,還應該考慮在散列中添加「salt」,這意味着在散列之前向要散列的值添加一些額外的數據並添加額外的安全層。通過這種方式,即使攻擊者知道您使用了哪種哈希算法,他們也不會輕易知道在對哈希值進行哈希處理之前如何對數據進行醃製。
要考慮的另一件事是使用System.Security.SecureString將這些受保護的值在內存中未加密/解除加密。使用標準字符串意味着包含在字符串中的數據以純文本格式存在堆中,並且即使在字符串超出作用域後,實際上也可能會保留一段時間。如果有人可以從機器中獲取內存轉儲,他/她可能會提取未受保護的數據。在某些情況下,這可能是矯枉過正的,但需要注意的地方。