下面是完整的類,可以設置任意密碼
'DES及md5加密解密----添加引用中添加對system.web的引用。Imports?System.Security.Cryptography
Imports?System
Imports?System.Text
Imports?System.Web
'''?<summary>
'''?DES加密類
'''?</summary>
'''?<remarks></remarks>
Public?Class?DESEncrypt
Public?Sub?DESEncrypt()
End?Sub
Public?Shared?Function?Encrypt(ByVal?Text?As?String)?As?String
Return?Encrypt(Text,?"12345678")
End?Function
Public?Shared?Function?Encrypt(ByVal?Text?As?String,?ByVal?sKey?As?String)?As?String
Dim?des?As?New?DESCryptoServiceProvider()
Dim?inputByteArray?As?Byte()
inputByteArray?=?Encoding.Default.GetBytes(Text)
des.Key?=?ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey,?"md5").Substring(0,?8))
des.IV?=?ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey,?"md5").Substring(0,?8))
Dim?ms?As?New?System.IO.MemoryStream()
Dim?cs?As?New?CryptoStream(ms,?des.CreateEncryptor(),?CryptoStreamMode.Write)
cs.Write(inputByteArray,?0,?inputByteArray.Length)
cs.FlushFinalBlock()
Dim?ret?As?New?StringBuilder()
Dim?b?As?Byte
For?Each?b?In?ms.ToArray()
ret.AppendFormat("{0:X2}",?b)
Next
Return?ret.ToString()
End?Function
Public?Shared?Function?Decrypt(ByVal?Text?As?String)?As?String
Return?Decrypt(Text,?"12345678")
End?Function
Public?Shared?Function?Decrypt(ByVal?Text?As?String,?ByVal?sKey?As?String)?As?String
Dim?des?As?New?DESCryptoServiceProvider()
Dim?len?As?Integer
len?=?Text.Length?/?2
Dim?inputByteArray(len?-?1)?As?Byte
Dim?x,?i?As?Integer
For?x?=?0?To?len?-?1
i?=?Convert.ToInt32(Text.Substring(x?*?2,?2),?16)
inputByteArray(x)?=?CType(i,?Byte)
Next
des.Key?=?ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey,?"md5").Substring(0,?8))
des.IV?=?ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey,?"md5").Substring(0,?8))
Dim?ms?As?New?System.IO.MemoryStream()
Dim?cs?As?New?CryptoStream(ms,?des.CreateDecryptor(),?CryptoStreamMode.Write)
cs.Write(inputByteArray,?0,?inputByteArray.Length)
cs.FlushFinalBlock()
Return?Encoding.Default.GetString(ms.ToArray())
End?Function
End?Class
'以下是調用方法
Public?Class?Form1
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click?'加密
Dim?str_Encrypt?As?String?=?DESEncrypt.Encrypt("妳要加密的文本,可以是任意長度",?"密碼,可以很長,如果省略這個參數就是默認的12345678")
End?Sub
Private?Sub?Button2_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button2.Click?'解密
Dim?str_Decrypt?As?String?=?DESEncrypt.Decrypt("妳要解密的文本,?可以是任意長度",?"加密時用到的密碼,如果省略這個參數就是默認的12345678")
End?Sub