正在阅读:微软.net加密技术简介微软.net加密技术简介

2005-09-05 10:23 出处: 作者:Paul D. Sheriff 责任编辑:moningfeng

使用MD5计算散列

  一旦你学会了使用一个散列类,你已经基本上掌握了所有的散列类。下面的方法使用的就是MD5散列算法。我想你已经注意到代码基本上是相同的,除了CryptoServiceProvider类是不同的。
以下内容为程序代码:

Private Sub HashTextMD5(ByVal TextToHash As String)
Dim md5 As MD5CryptoServiceProvider
Dim bytValue() As Byte
Dim bytHash() As Byte

' Create New Crypto Service Provider Object
md5 = New MD5CryptoServiceProvider

' Convert the original string to array of Bytes
bytValue = System.Text.Encoding. _
UTF8.GetBytes(TextToHash)

' Compute the Hash, returns an array of Bytes
bytHash = md5.ComputeHash(bytValue)

md5.Clear()

' Return a base 64 encoded string of the Hash value
Debug.WriteLine(Convert.ToBase64String(bytHash))
End Sub


  传入“Paul”,MD5算法输出的字符串如下:
  以下内容为程序代码:

nVWBsHh1MKNctPioSyqyTQ==


  加密的字符串和原始字符串完全不同。散列算法非常适合于用于密码,因为生成的字符串完全没有任何含义,所以黑客十分难于破解。你可以使用散列算法得到密码的散列值存储在数据库中。当用户输入密码时,你首先得到密码的散列值,然后通过网络发送散列值,和数据库中存储的散列值进行比较。请记住散列是单向操作,一旦进行散列操作,你永远不能恢复原始的密码。

如何选择算法

  上面介绍的各种散列算法进行的操作是一样的。其区别只在于用于产生散列所用的键值(key)的长度,所用键值的长度越大,加密的安全性就越强。例如SHA1使用160位(bit)的加密键值,然而MD5使用的是128位的加密键值,所以SHA1比MD5更难于破解。

  选择散列算法时另一点需要考虑的是,是否有实际的或理论上出现冲突的可能。如果重现冲突,两个截然不同的字符串经过散列运算后将得到同样的结果。SHA1在理论上和实际上,都没有出现冲突的可能。MD5在理论上可能出现冲突,但是在实际中却没有可能。所以选择散列算法的关键还是你需要的安全性。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品