C# WPF加密

4

我希望使用C# WPF加密密码。什么是最好的算法(易于实现)? 我需要一些关于如何使用它的示例...


你想要单向还是双向加密?在http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx上有大量示例,其中列出了.Net中的所有加密提供程序。 - Mikael Svenson
3
WPF是一个用户界面框架,与加密无关。我建议你从这里开始查看:http://www.c-sharpcorner.com/uploadfile/gsparamasivam/cryptencryption11282005061028am/cryptencryption.aspx - TimothyP
@Mikael Svenson:单向加密就可以了,因为我不需要反向解密。我考虑将密码加密后存储在数据库中,然后将存储的值与用户输入的密码进行匹配。 - sikas
1个回答

5
不要尝试创建自己的加密算法,而是使用.NET Framework提供的密码学类,通过System.Security.Cryptography
对于密码,一个好的解决方案是使用单向加密,如MD5哈希或SHA1。当用户输入他/她的密码时,计算哈希值并将其与存储的哈希值进行比较。这样做的优点是您不需要担心如何安全地存储用于加密密码的密钥。
为了增加使用单向哈希的安全性,您可以应用盐,这有助于限制某些类型的攻击(如字典攻击)的有效性等。我没有阅读维基条目,但我相信this会提供更多细节。

非常感谢,我在我的毕业项目中使用过MD5哈希,但是我正在考虑一种更好的存储密码的方法。 - sikas
@sikas,当涉及到安全存储密码时,我不知道有什么比使用加盐哈希更好的方法。当然,如果您有其他要求,单向哈希无法解决,那么您应该提供一些需要满足的密码存储解决方案的标准。 - Chris Taylor
我正在使用Access数据库来存储所有数据。因此,密码可以以单向加密方式存储,无需反转... 我会检查盐哈希的想法。但是你知道它是否产生固定大小的字符串还是可变大小的吗? - sikas
将盐添加到密码中,然后对组合进行哈希处理,因此最终的哈希值是固定大小的,其中MD5为128位(16字节),SHA1为160位(20字节)等。 - Chris Taylor
谢谢,我觉得我会继续使用MD5,因为我之前用过它。 - sikas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接