1回顶部 概述:学习如何利用.net框架中的加密功能来保护你的数据。 下载代码:CryptoSampleCSSample.msi(http://download.microsoft.com/download/2/a/3/2a363740-3da6-48e9-a5d1-8eca01524372/CryptoSampleCSSample.msi)
2回顶部 对于.net开发者,有几种散列算法供选择,最常用的是SHA1和MD5。让我们看看如何将一个普通的字符串“Paul”进行散列运算,得到一个完全不可辨认的值。 使用SHA1计算散列 让我们创建一个新的例程来计算字符串“Paul”的散列值。在Visual Studio .NET中创建一个新的Windows应用程序,在窗体上拖放一个按钮。在按钮的Click事件中,调用一个名称为HashText的方法。下面就是你添加到窗体代码中用来试验散列算法的代码。在输入代码之前你需要引入System.Security.Cryptography命名空间。 以下内容为程序代码: Private Sub HashText(ByVal TextToHash As String) 你可以将一个字符串传入这个例程,以得到散列值。例如,你可以传入“Paul”这个字符串,调试窗口将显示下列字符: 以下内容为程序代码: w2h6uYgMJt/nq5ZqihcBteAXwv8= 现在将传入的值改为“Pauly”,你可以看到如下输出: 以下内容为程序代码: proywxJ0znMpGF5sbB18+7GSAsM= 正象你看到的,传入字符串的一处小小的改动就生成了一个完全不同的结果。这也是散列如此有效的原因————很难得到字符转换的模式或者从加密的字符串中得到原始字符串的内容。 3回顶部 使用MD5计算散列 一旦你学会了使用一个散列类,你已经基本上掌握了所有的散列类。下面的方法使用的就是MD5散列算法。我想你已经注意到代码基本上是相同的,除了CryptoServiceProvider类是不同的。 以下内容为程序代码: Private Sub HashTextMD5(ByVal TextToHash As String) 传入“Paul”,MD5算法输出的字符串如下: 以下内容为程序代码: nVWBsHh1MKNctPioSyqyTQ== 加密的字符串和原始字符串完全不同。散列算法非常适合于用于密码,因为生成的字符串完全没有任何含义,所以黑客十分难于破解。你可以使用散列算法得到密码的散列值存储在数据库中。当用户输入密码时,你首先得到密码的散列值,然后通过网络发送散列值,和数据库中存储的散列值进行比较。请记住散列是单向操作,一旦进行散列操作,你永远不能恢复原始的密码。 如何选择算法 上面介绍的各种散列算法进行的操作是一样的。其区别只在于用于产生散列所用的键值(key)的长度,所用键值的长度越大,加密的安全性就越强。例如SHA1使用160位(bit)的加密键值,然而MD5使用的是128位的加密键值,所以SHA1比MD5更难于破解。 选择散列算法时另一点需要考虑的是,是否有实际的或理论上出现冲突的可能。如果重现冲突,两个截然不同的字符串经过散列运算后将得到同样的结果。SHA1在理论上和实际上,都没有出现冲突的可能。MD5在理论上可能出现冲突,但是在实际中却没有可能。所以选择散列算法的关键还是你需要的安全性。 |
正在阅读:微软.net加密技术简介微软.net加密技术简介
2005-09-05 10:23
出处:
责任编辑:moningfeng