加密解密都是使用.NET的System.Security.Cryptography类库。 源代码: Imports System.Security.Cryptography Public Class CStrEncrypt '*加密解密方式 Public Enum SymmProvEnum As Integer DES RC2 Rijndael End Enum Private mobjCryptoService As SymmetricAlgorithm '*构造函数 Sub New(ByVal NetSelected As SymmProvEnum) Select Case NetSelected Case SymmProvEnum.DES mobjCryptoService = New DESCryptoServiceProvider() Case SymmProvEnum.RC2 mobjCryptoService = New RC2CryptoServiceProvider() Case SymmProvEnum.Rijndael mobjCryptoService = New RijndaelManaged() End Select End Sub '*构造函数 Sub New(ByVal ServiceProvider As SymmetricAlgorithm) mobjCryptoService = ServiceProvider End Sub '*获取加密解密键 Private Function GetLegalKey(ByVal Key As String) As Byte() Try Dim sTemp As String If (mobjCryptoService.LegalKeySizes.Length > 0) Then Dim lessSize As Integer = 0 Dim moreSize As Integer = mobjCryptoService.LegalKeySizes(0).MinSize While (Key.Length * 8 > moreSize) lessSize = moreSize moreSize = moreSize + mobjCryptoService.LegalKeySizes(0).SkipSize End While sTemp = Key.PadRight(moreSize / 8, "") Else sTemp = Key End If Return System.Text.ASCIIEncoding.ASCII.GetBytes(sTemp) Catch ex As Exception Return Nothing End Try End Function '*加密 Public Function Encrypting(ByVal Source As String, ByVal Key As String) As String Try Dim bytIn As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(Source) Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream() Dim bytKey As Byte() = GetLegalKey(Key) mobjCryptoService.Key = bytKey mobjCryptoService.IV = bytKey Dim encrypto As ICryptoTransform = mobjCryptoService.CreateEncryptor() Dim cs As CryptoStream = New CryptoStream(ms, encrypto, CryptoStreamMode.Write) cs.Write(bytIn, 0, bytIn.Length) cs.FlushFinalBlock() Dim bytOut As Byte() = ms.GetBuffer() Dim i As Integer = 0 For i = 0 To bytOut.Length If bytOut(i) = 0 Then Exit For End If Next Return System.Convert.ToBase64String(bytOut, 0, i) Catch ex As Exception Return Nothing End Try End Function '*解密 Public Function Decrypting(ByVal Source As String, ByVal Key As String) As String Dim bytIn As Byte() = System.Convert.FromBase64String(Source) Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream(bytIn, 0, bytIn.Length) Dim bytKey As Byte() = GetLegalKey(Key) Try mobjCryptoService.Key = bytKey mobjCryptoService.IV = bytKey Dim encrypto As ICryptoTransform = mobjCryptoService.CreateDecryptor() Dim cs As CryptoStream = New CryptoStream(ms, encrypto, CryptoStreamMode.Read) Dim sr As System.IO.StreamReader = New System.IO.StreamReader(cs) Return sr.ReadToEnd() Catch ex As Exception Return Nothing End Try End Function Public Shared Function MD5Encrypting(ByVal strencrypt As String) As String Dim md5encrypt As New MD5CryptoServiceProvider() Dim md5byte As Byte() = md5encrypt.ComputeHash(System.Text.Encoding.Default.GetBytes(strencrypt)) Dim sBuilder As New System.Text.StringBuilder() For i As Integer = 0 To 15 '32位的情况 sBuilder.Append(md5byte(i).ToString("x2")) Next i Return sBuilder.ToString() End Function End Class 调用方法: '加密系统超级管理员的密码 Public Shared Function EncryptAdmin(ByVal strLoginAdminPwd As String) As String Dim objencrypt As New CStrEncrypt(CStrEncrypt.SymmProvEnum.DES) Return objencrypt.Encrypting(strLoginAdminPwd, "XX2010") End Function '解密系统超级管理员的密码 Public Shared Function DecryptAdmin(ByVal strLoginAdminPwd As String) As String Dim objencrypt As New CStrEncrypt(CStrEncrypt.SymmProvEnum.DES) Return objencrypt.Decrypting(strLoginAdminPwd, "XX2010") End Function