给你段VB的例子,你看看!Option Explicit
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Private Const RSP_SIMPLE_SERVICE = 1
Private Const RSP_UNREGISTER_SERVICE = 0Private Const BITS_TO_A_BYTE = 8
Private Const BYTES_TO_A_WORD = 4
Private Const BITS_TO_A_WORD = 32Private m_lOnBits(30) As Long
Private m_l2Power(30) As Long
Dim test As New PassCrypt
Dim temp As String
Private Sub Command1_Click()
    temp = MD5_calc(Text1.Text)
    MsgBox temp
End SubPrivate Sub Form_Load()
    Dim pid As Long
    Dim regserv As Long
    pid = GetCurrentProcessId() '得到当前进程ID
    regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE) '把本程序注册为serviceEnd Sub
Private Function LShift(ByVal lValue As Long, ByVal iShiftBits As Long) As Long
    If iShiftBits = 0 Then
        LShift = lValue
        Exit Function
    ElseIf iShiftBits = 31 Then
        If lValue And 1 Then
            LShift = &H80000000
        Else
            LShift = 0
        End If
        Exit Function
    ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
        Err.Raise 6
    End If    If (lValue And m_l2Power(31 - iShiftBits)) Then
        LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
    Else
        LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
    End If
End FunctionPrivate Function RShift(ByVal lValue As Long, ByVal iShiftBits As Long) As Long
    If iShiftBits = 0 Then
        RShift = lValue
        Exit Function
    ElseIf iShiftBits = 31 Then
        If lValue And &H80000000 Then
            RShift = 1
        Else
            RShift = 0
        End If
        Exit Function
    ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
        Err.Raise 6
    End If
    
    RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)    If (lValue And &H80000000) Then
        RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
    End If
End FunctionPrivate Function RotateLeft(ByVal lValue As Long, ByVal iShiftBits As Long) As Long
    RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
End FunctionPrivate Function AddUnsigned(ByVal lX As Long, ByVal lY As Long) As Long
    Dim lX4 As Long
    Dim lY4 As Long
    Dim lX8 As Long
    Dim lY8 As Long
    Dim lResult As Long    lX8 = lX And &H80000000
    lY8 = lY And &H80000000
    lX4 = lX And &H40000000
    lY4 = lY And &H40000000    lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)    If lX4 And lY4 Then
        lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
    ElseIf lX4 Or lY4 Then
        If lResult And &H40000000 Then
            lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
        Else
            lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
        End If
    Else
        lResult = lResult Xor lX8 Xor lY8
    End If    AddUnsigned = lResult
End FunctionPrivate Function F(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long
    F = (x And y) Or ((Not x) And z)
End FunctionPrivate Function G(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long
    G = (x And z) Or (y And (Not z))
End FunctionPrivate Function H(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long
    H = (x Xor y Xor z)
End FunctionPrivate Function I(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long
    I = (y Xor (x Or (Not z)))
End FunctionPrivate Sub FF(a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long, ByVal x As Long, ByVal s As Long, ByVal ac As Long)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
End SubPrivate Sub GG(a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long, ByVal x As Long, ByVal s As Long, ByVal ac As Long)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
End SubPrivate Sub HH(a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long, ByVal x As Long, ByVal s As Long, ByVal ac As Long)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
End SubPrivate Sub II(a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long, ByVal x As Long, ByVal s As Long, ByVal ac As Long)
    a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac))
    a = RotateLeft(a, s)
    a = AddUnsigned(a, b)
End SubPrivate Function ConvertToWordArray(ByVal sMessageUnicode As String) As Variant
    Dim lMessageLength As Long
    Dim lNumberOfWords As Long
    Dim lWordArray() As Long
    Dim lBytePosition As Long
    Dim lByteCount As Long
    Dim lWordCount As Long
    Dim sMessage As String
    
    Const MODULUS_BITS = 512
    Const CONGRUENT_BITS = 448
    
    sMessage = StrConv(sMessageUnicode, vbFromUnicode)
    lMessageLength = LenB(sMessage)
    
    lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
    ReDim lWordArray(lNumberOfWords - 1)
    
    lBytePosition = 0
    lByteCount = 0
    Do Until lByteCount >= lMessageLength
        lWordCount = lByteCount \ BYTES_TO_A_WORD
        lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
        lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(AscB(MidB(sMessage, lByteCount + 1, 1)), lBytePosition)
        lByteCount = lByteCount + 1
    Loop    lWordCount = lByteCount \ BYTES_TO_A_WORD
    lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE    lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)    lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
    lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
    
    ConvertToWordArray = lWordArray
End Function

解决方案 »

  1.   

    Private Function WordToHex(ByVal lValue As Long) As String
        Dim lByte
        Dim lCount
        
        For lCount = 0 To 3
            lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
            WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
        Next
    End FunctionPublic Function MD5_calc(ByVal sMessage As String) As String
        Dim x As Variant
        Dim k As Long
        Dim AA As Long
        Dim BB As Long
        Dim CC As Long
        Dim DD As Long
        Dim a As Long
        Dim b As Long
        Dim c As Long
        Dim d As Long
        
        Const S11 = 7
        Const S12 = 12
        Const S13 = 17
        Const S14 = 22
        Const S21 = 5
        Const S22 = 9
        Const S23 = 14
        Const S24 = 20
        Const S31 = 4
        Const S32 = 11
        Const S33 = 16
        Const S34 = 23
        Const S41 = 6
        Const S42 = 10
        Const S43 = 15
        Const S44 = 21    m_lOnBits(0) = CLng(1)
        m_lOnBits(1) = CLng(3)
        m_lOnBits(2) = CLng(7)
        m_lOnBits(3) = CLng(15)
        m_lOnBits(4) = CLng(31)
        m_lOnBits(5) = CLng(63)
        m_lOnBits(6) = CLng(127)
        m_lOnBits(7) = CLng(255)
        m_lOnBits(8) = CLng(511)
        m_lOnBits(9) = CLng(1023)
        m_lOnBits(10) = CLng(2047)
        m_lOnBits(11) = CLng(4095)
        m_lOnBits(12) = CLng(8191)
        m_lOnBits(13) = CLng(16383)
        m_lOnBits(14) = CLng(32767)
        m_lOnBits(15) = CLng(65535)
        m_lOnBits(16) = CLng(131071)
        m_lOnBits(17) = CLng(262143)
        m_lOnBits(18) = CLng(524287)
        m_lOnBits(19) = CLng(1048575)
        m_lOnBits(20) = CLng(2097151)
        m_lOnBits(21) = CLng(4194303)
        m_lOnBits(22) = CLng(8388607)
        m_lOnBits(23) = CLng(16777215)
        m_lOnBits(24) = CLng(33554431)
        m_lOnBits(25) = CLng(67108863)
        m_lOnBits(26) = CLng(134217727)
        m_lOnBits(27) = CLng(268435455)
        m_lOnBits(28) = CLng(536870911)
        m_lOnBits(29) = CLng(1073741823)
        m_lOnBits(30) = CLng(2147483647)
        
        m_l2Power(0) = CLng(1)
        m_l2Power(1) = CLng(2)
        m_l2Power(2) = CLng(4)
        m_l2Power(3) = CLng(8)
        m_l2Power(4) = CLng(16)
        m_l2Power(5) = CLng(32)
        m_l2Power(6) = CLng(64)
        m_l2Power(7) = CLng(128)
        m_l2Power(8) = CLng(256)
        m_l2Power(9) = CLng(512)
        m_l2Power(10) = CLng(1024)
        m_l2Power(11) = CLng(2048)
        m_l2Power(12) = CLng(4096)
        m_l2Power(13) = CLng(8192)
        m_l2Power(14) = CLng(16384)
        m_l2Power(15) = CLng(32768)
        m_l2Power(16) = CLng(65536)
        m_l2Power(17) = CLng(131072)
        m_l2Power(18) = CLng(262144)
        m_l2Power(19) = CLng(524288)
        m_l2Power(20) = CLng(1048576)
        m_l2Power(21) = CLng(2097152)
        m_l2Power(22) = CLng(4194304)
        m_l2Power(23) = CLng(8388608)
        m_l2Power(24) = CLng(16777216)
        m_l2Power(25) = CLng(33554432)
        m_l2Power(26) = CLng(67108864)
        m_l2Power(27) = CLng(134217728)
        m_l2Power(28) = CLng(268435456)
        m_l2Power(29) = CLng(536870912)
        m_l2Power(30) = CLng(1073741824)
        
        x = ConvertToWordArray(sMessage)
        
        a = &H67452301
        b = &HEFCDAB89
        c = &H98BADCFE
        d = &H10325476    For k = 0 To UBound(x) Step 16
            AA = a
            BB = b
            CC = c
            DD = d
        
            FF a, b, c, d, x(k + 0), S11, &HD76AA478
            FF d, a, b, c, x(k + 1), S12, &HE8C7B756
            FF c, d, a, b, x(k + 2), S13, &H242070DB
            FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
            FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
            FF d, a, b, c, x(k + 5), S12, &H4787C62A
            FF c, d, a, b, x(k + 6), S13, &HA8304613
            FF b, c, d, a, x(k + 7), S14, &HFD469501
            FF a, b, c, d, x(k + 8), S11, &H698098D8
            FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
            FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
            FF b, c, d, a, x(k + 11), S14, &H895CD7BE
            FF a, b, c, d, x(k + 12), S11, &H6B901122
            FF d, a, b, c, x(k + 13), S12, &HFD987193
            FF c, d, a, b, x(k + 14), S13, &HA679438E
            FF b, c, d, a, x(k + 15), S14, &H49B40821
        
            GG a, b, c, d, x(k + 1), S21, &HF61E2562
            GG d, a, b, c, x(k + 6), S22, &HC040B340
            GG c, d, a, b, x(k + 11), S23, &H265E5A51
            GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
            GG a, b, c, d, x(k + 5), S21, &HD62F105D
            GG d, a, b, c, x(k + 10), S22, &H2441453
            GG c, d, a, b, x(k + 15), S23, &HD8A1E681
            GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
            GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
            GG d, a, b, c, x(k + 14), S22, &HC33707D6
            GG c, d, a, b, x(k + 3), S23, &HF4D50D87
            GG b, c, d, a, x(k + 8), S24, &H455A14ED
            GG a, b, c, d, x(k + 13), S21, &HA9E3E905
            GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
            GG c, d, a, b, x(k + 7), S23, &H676F02D9
            GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
                
            HH a, b, c, d, x(k + 5), S31, &HFFFA3942
            HH d, a, b, c, x(k + 8), S32, &H8771F681
            HH c, d, a, b, x(k + 11), S33, &H6D9D6122
            HH b, c, d, a, x(k + 14), S34, &HFDE5380C
            HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
            HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
            HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
            HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
            HH a, b, c, d, x(k + 13), S31, &H289B7EC6
            HH d, a, b, c, x(k + 0), S32, &HEAA127FA
            HH c, d, a, b, x(k + 3), S33, &HD4EF3085
            HH b, c, d, a, x(k + 6), S34, &H4881D05
            HH a, b, c, d, x(k + 9), S31, &HD9D4D039
            HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
            HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
            HH b, c, d, a, x(k + 2), S34, &HC4AC5665
        
            II a, b, c, d, x(k + 0), S41, &HF4292244
            II d, a, b, c, x(k + 7), S42, &H432AFF97
            II c, d, a, b, x(k + 14), S43, &HAB9423A7
            II b, c, d, a, x(k + 5), S44, &HFC93A039
            II a, b, c, d, x(k + 12), S41, &H655B59C3
            II d, a, b, c, x(k + 3), S42, &H8F0CCC92
            II c, d, a, b, x(k + 10), S43, &HFFEFF47D
            II b, c, d, a, x(k + 1), S44, &H85845DD1
            II a, b, c, d, x(k + 8), S41, &H6FA87E4F
            II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
            II c, d, a, b, x(k + 6), S43, &HA3014314
            II b, c, d, a, x(k + 13), S44, &H4E0811A1
            II a, b, c, d, x(k + 4), S41, &HF7537E82
            II d, a, b, c, x(k + 11), S42, &HBD3AF235
            II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
            II b, c, d, a, x(k + 9), S44, &HEB86D391
        
            a = AddUnsigned(a, AA)
            b = AddUnsigned(b, BB)
            c = AddUnsigned(c, CC)
            d = AddUnsigned(d, DD)
        Next
        
        MD5_calc = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
    End Function
      

  2.   

    写个方法给你,返回MD5加密后的字符串。using System;
    using System.Security;
    using System.Security.Cryptography;
    using System.Text;public class class1
    {
       public static string GetMD5(string s)
       {
    byte[] md5Bytes = Encoding.Default.GetBytes( s ); // compute MD5 hash.
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] cryptString = md5.ComputeHash ( md5Bytes );

    int len;
    string temp=String.Empty; len=cryptString.Length;

    for(int i=0;i<len;i++)
    {
    temp +=cryptString[i].ToString("X2");
    }
    return temp;
        }
    }
      

  3.   

    c# System.Security.Cryptography.MD5
      

  4.   

    使用ASP.NET加密口令
    当我们在网站上建立数据库时,保护用户的信息安全是非常必要的。多数用户不愿意让别人知道自己的信息,同时网管也不想因为安全问题而丢失网站的信誉。无论对于谁,安全问题都是非常重要的。   为了解决这个问题,我给大家提供一个简单实用,但是老套的方法,就是口令加密。在此我们使用ASP.NET技术对口令加密。简单的讲,就是将用户提供的口令加密之后,然后让它和存放于系统中的数据比较,如果相同,则通过验证。   在ASP中,并未提供加密的对象,我们只能使用外部的对象来进行加密。现在好了,在ASP.NET中提供了加密的解决方法。在名字空间System.Web.Security中包含了类FormsAuthentication,其中有一个方法HashPasswordForStoringInConfigFile。这个方法可以将用户提供的字符变成乱码,然后存储起来,甚至可以存储在cookies中。   HashPasswordForStoringInConfigFile方法使用起来很简单,它支持"SHA1"和"MD5"加密算法。   下面的代码简单的演示了关于其用法:<%@ Page language="c#" %> <%@ Import Namespace="System.Web.Security" %> <html> <head> <script language="C#" runat="server"> public void encryptString(Object sender, EventArgs e) { SHA1.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text,"SHA1"); MD5.Text =FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "MD5") ; } </script> </head> <body> <form runat="server" ID="Form1"> <p> <b>Original Clear Text Password: </b> <br> <asp:Textbox id="txtPassword" runat="server" /> <asp:Button runat="server" text="Encrypt String" onClick="encryptString" ID="Button1" /> </p> <p> <b>Encrypted Password In SHA1: </b> <asp:label id="SHA1" runat="server" /> </p> <p> <b>Encrypted Password In MD5: </b> <asp:label id="MD5" runat="server" /> </p> </form> </body> </html>  正如你所看到的这样简单易用。我们可以把这段加密程序封装在一个函数里便于重复的使用。代码如下:public string EncryptPassword(string PasswordString,string PasswordFormat ) { if (PasswordFormat="SHA1"){ EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"SHA1"); } elseif (PasswordFormat="MD5") { EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5"); } else { EncryptPassword=""; }  我们可以在数据库中添加一个字段,使用insert将加密的口令作为一个string存入数据库中。当用户登陆的时候,就可以将用户输入的口令加密结果和数据库中的正确结果比较,通过这种办法来验证口令的正确性了。
      

  5.   

    .NET提供了进行数据加密类,下面就用例子进行说明如何使用MD5进行数据加密。 首先,创建一个UserAccount表,字段两个:UserName和Password,类型分别为varchar(25)和binary(16),下面的ASP.NET代码就是创建用户时的具体实现: <%@ Import Namespace="System.Security.Cryptography" %>
    <%@ Import Namespace="System.Text" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <script runat="server" language="VB">
        Sub CreateAccount(sender as Object, e as EventArgs)
          '1. 创建连接
          Const strConnString as String 
          strConnString= "Data Source=.;Initial Catalog=test;User Id=sa;Password=;"
          Dim objConn as New SqlConnection(strConnString)
          
          '2. 创建Command对象
          Dim strSQL as String = _
              "INSERT INTO UserAccount(Username,Password) " & _
              "VALUES(@Username, @Password)"
          Dim objCmd as New SqlCommand(strSQL, objConn)
          
          '3. 创建参数
          Dim paramUsername as SqlParameter
          paramUsername = New SqlParameter("@Username", SqlDbType.VarChar, 25)
          paramUsername.Value = txtUsername.Text
          objCmd.Parameters.Add(paramUsername)
          
      
          '加密密码字段       Dim md5Hasher as New MD5CryptoServiceProvider()
        
          Dim hashedBytes as Byte()   
          Dim encoder as New UTF8Encoding()      hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text))            Dim paramPwd as SqlParameter
          paramPwd = New SqlParameter("@Password", SqlDbType.Binary, 16)
          paramPwd.Value = hashedBytes
          objCmd.Parameters.Add(paramPwd)
          
          
          '插入数据库
          objConn.Open()
          objCmd.ExecuteNonQuery()
          objConn.Close()
          
          'Redirect 其它页面
        End Sub
    </script><form runat="server">
      <h1>创建帐号:</h1>
      用户名: <asp:TextBox runat="server" id="txtUsername"/>
      <br/>
      密码: <asp:TextBox runat="server" id="txtPwd" TextMode="Password"/>  
      <p><asp:Button runat="server" Text="创建用户" OnClick="CreateAccount"/></p>
    </form>下面是对用户进行验证的ASP.NET代码: 
    <%@ Import Namespace="System.Security.Cryptography" %>
    <%@ Import Namespace="System.Text" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <script runat="server" language="VB">
        Sub Login(sender as Object, e as EventArgs)
          '1. 创建连接
          Const strConnString as String 
          strConnString= "Data Source=.;Initial Catalog=test;User Id=sa;Password=;"
          Dim objConn as New SqlConnection(strConnString)
          
          '2. 创建Command对象
          Dim strSQL as String = "SELECT COUNT(*) FROM UserAccount " & _
                            "WHERE Username=@Username AND Password=@Password"
          Dim objCmd as New SqlCommand(strSQL, objConn)
          
          '3. 创建参数
          Dim paramUsername as SqlParameter
          paramUsername = New SqlParameter("@Username", SqlDbType.VarChar, 25)
          paramUsername.Value = txtUsername.Text
          objCmd.Parameters.Add(paramUsername)
          
      
          '加密密码
          Dim md5Hasher as New MD5CryptoServiceProvider()
        
          Dim hashedDataBytes as Byte()   
          Dim encoder as New UTF8Encoding()      hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text))            Dim paramPwd as SqlParameter
          paramPwd = New SqlParameter("@Password", SqlDbType.Binary, 16)
          paramPwd.Value = hashedDataBytes
          objCmd.Parameters.Add(paramPwd)
          
          
          '执行查询
          objConn.Open()
          Dim iResults as Integer = objCmd.ExecuteScalar()
          objConn.Close()
          
          If iResults = 1 then
            '合法
          Else
            '不合法
          End If
        End Sub
    </script><form runat="server">
      <h1>登录:</h1>
      用户名:<asp:TextBox runat="server" id="txtUsername"/><br/> 
      密  码:<asp:TextBox runat="server" id="txtPwd" TextMode="Password"/>  
      <p><asp:Button runat="server" Text="登录" OnClick="Login"/>
    </form>下面是MD5CryptoServiceProvider直接生成的例子: 
    <%@ Import Namespace="System.Security.Cryptography" %>
    <%@ Import Namespace="System.Text" %>
    <script language="VB" runat="server">
      Sub DisplayEncryptedText(sender as Object, e as EventArgs)
        If Page.IsValid then
          Dim md5Hasher as New MD5CryptoServiceProvider()
        
          Dim hashedDataBytes as Byte()   
          Dim encoder as New UTF8Encoding()      hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(txtPassword.Text))    
        
          ltlResults.Text = "<b>Encrypted Results</b><br /> The results are encrypted into " & _
                  "an array of 16 bytes.  These 16 bytes contain the values:<p><ul>"
        
          Dim b as Byte
          For Each b in hashedDataBytes
        ltlResults.Text &= "<li>" & b & "</li>"
          Next b
          
          ltlResults.Text &= "</ul>"    
        End If
      End Sub  
    </script><form runat="server">
      Enter a string:
      <asp:TextBox id="txtPassword" runat="server" />
      <asp:RequiredFieldValidator runat="server" ControlToValidate="txtPassword"
               Display="Dynamic" ErrorMessage="<i>You must provide a value here...</i>" />
      <asp:RegularExpressionValidator runat="server" ControlToValidate="txtPassword"
               Display="Dynamic" ErrorMessage="<i>The string must be 20 characters or less...</i>"
               ValidationExpression="^.{1,20}$" />
      <br />
      <asp:Button runat="server" Text="View the String as Encrypted Text"
    OnClick="DisplayEncryptedText" />
      <p>
      <asp:Literal runat="server" id="ltlResults" />
    </form>
      

  6.   

    /// <summary>
    /// MD5加密指定字符串,MD5是不可逆加密算法
    /// </summary>
    /// <param name="strValue">要加密的字符串</param>
    /// <returns>加密后的字符串</returns>
    public static string EncryptMD5String(string strValue)
    {
    #if DEBUG
    Debug.Assert(strValue.Trim() != "" , "空字符串" , "空字符串不需要加密") ;
    #endif//DEBUG
    //转换成bytearray
    Byte[] hba = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).
    ComputeHash(StringToByteArray(strValue)); return ByteArrayToString(hba) ;}
    /// <summary>
    /// 转换string到Byte数组
    /// </summary>
    /// <param name="s">要转换的字符串</param>
    /// <returns>转换的Byte数组</returns>
    public static Byte[] StringToByteArray(String s)
    {
    /*
    Char[] ca = s.ToCharArray();
    Byte[] ba = new Byte[ca.Length];
    for(int i=0; i<ba.Length; i++) ba[i] = (Byte)ca[i];
    return ba;*/ return Encoding.UTF8.GetBytes(s) ;
    }/// <summary>
    /// 转换Byte数组到字符串
    /// </summary>
    /// <param name="arrByte">Byte数组</param>
    /// <returns>字符串</returns>
    public static string ByteArrayToString(Byte[] arrByte)
    {
    /*
    //char[] ca = new char[a_arrByte.Length] ;
    for(int i = 0 ; i < a_arrByte.Length ; i ++)
    {
    result += (char)a_arrByte[i] ;
    }*/ return Encoding.UTF8.GetString(arrByte) ;
    }/// <summary>
    /// 判断两个加密字符串是否相同
    /// </summary>
    /// <param name="str1"></param>
    /// <param name="str2"></param>
    /// <returns>如果相同返回真</returns>
    public static bool IsSame(string str1 , string str2)
    {
    Byte[] b1 = StringToByteArray(str1) ;
    Byte[] b2 = StringToByteArray(str2) ;
    if(b1.Length != b2.Length)
    {
    return false ;
    } for(int i = 0 ; i < b1.Length ; i ++)
    {
    if(b1[i] != b2[i])
    {
    return false ;
    }
    } return true ;
    }
      

  7.   

    至于嘛,.NET framework中现存的方法,将字符串进行MD5加密FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "MD5") ;
      

  8.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Security.Cryptography;
     
    namespace testMD5
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label labMd5;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.button1 = new System.Windows.Forms.Button();
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.label1 = new System.Windows.Forms.Label();
    this.labMd5 = new System.Windows.Forms.Label();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(80, 32);
    this.button1.Name = "button1";
    this.button1.TabIndex = 0;
    this.button1.Text = "确定";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(80, 72);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(240, 21);
    this.textBox1.TabIndex = 1;
    this.textBox1.Text = "";
    // 
    // label1
    // 
    this.label1.Location = new System.Drawing.Point(16, 112);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(64, 16);
    this.label1.TabIndex = 2;
    this.label1.Text = "MD5散列:";
    this.label1.TextAlign = System.Drawing.ContentAlignment.TopRight;
    // 
    // labMd5
    // 
    this.labMd5.Location = new System.Drawing.Point(80, 112);
    this.labMd5.Name = "labMd5";
    this.labMd5.Size = new System.Drawing.Size(328, 16);
    this.labMd5.TabIndex = 3;
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(480, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
      this.labMd5,
      this.label1,
      this.textBox1,
      this.button1});
    this.Name = "Form1";
    this.Text = "Form1";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    this.labMd5.Text=getMD5(this.textBox1.Text);
    }
    /// <summary>返回 MD5 值</summary>
    /// <param name="orStr">要转换的 MD5 值的字符串</param>
    public string getMD5(string orStr) 
    {
    MD5 md5  = new MD5CryptoServiceProvider();
    byte[] fromData = System.Text.Encoding.Unicode.GetBytes(orStr);
    byte[] targetData = md5.ComputeHash(fromData);
    string byte2String = null; for (int i=0; i<targetData.Length; i++) 
    {
    byte2String += targetData[i].ToString("x");
    } return byte2String;
    } }
    }
      

  9.   

    static String Hash(String str) {
    byte[] bytes = Encoding.Unicode.GetBytes(str);
    MD5 md = MD5.Create();
    byte[] res = md.ComputeHash(bytes);
    return Encoding.Unicode.GetString(res);
    }
      

  10.   

    /// <summary>返回 MD5 值</summary>
    /// <param name="myString">要转换的 MD5 值的字符串</param>
    public string GetOf(string strSource) 
    {
    MD5 md5  = new MD5CryptoServiceProvider();
    byte[] fromData = System.Text.Encoding.Unicode.GetBytes(strSource);
    byte[] targetData = md5.ComputeHash(fromData);
    string strTarget = null;
    for (int i=0; i<targetData.Length; i++) 
    {
    strTarget += targetData[i].ToString("x");
    }
    return strTarget;
    }
      

  11.   

    用Unicode编码:
    static String MD5(String str) {
     byte[] data = Encoding.Unicode.GetBytes(str);
     MD5 mc = new MD5CryptoServiceProvider();
     byte[] result = md.ComputeHash(data);
     return Encoding.Unicode.GetString(result);
    }