• 動網中用到的幾個Function和一個JS[base64encode,base64decode,md5,sendmail,js]


    <%
    dim sBASE_64_CHARACTERS
    dim len1,k
    dim asc1,asContents1
    dim varchar,varasc,varHex,varlow,varhigh
    sBASE_64_CHARACTERS 
    = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"  
    sBASE_64_CHARACTERS 
    = strUnicode2Ansi(sBASE_64_CHARACTERS)

    Function strUnicodeLen(asContents)
      
    '計算unicode字符串的Ansi編碼的長度
      asContents1="a"&asContents
      len1
    =len(asContents1)
      k
    =0
      
    for i=1 to len1
          asc1
    =asc(mid(asContents1,i,1))
          
    if asc1<0 then asc1=65536+asc1
          
    if asc1>255 then
             k
    =k+2
          
    else
             k
    =k+1
          
    end if
      
    next
      strUnicodeLen
    =k-1
    End Function

    Function strUnicode2Ansi(asContents)
      
    '將Unicode編碼的字符串,轉換成Ansi編碼的字符串
      strUnicode2Ansi=""
      len1
    =len(asContents)
      
    for i=1 to len1
          varchar
    =mid(asContents,i,1)
          varasc
    =asc(varchar)
          
    if varasc<0 then varasc=varasc+65536
          
    if varasc>255 then
             varHex
    =Hex(varasc)
             varlow
    =left(varHex,2)
             varhigh
    =right(varHex,2)
             strUnicode2Ansi
    =strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
          
    else
             strUnicode2Ansi
    =strUnicode2Ansi & chrb(varasc)
          
    end if
       
    next
    End function

    Function strAnsi2Unicode(asContents)
      
    '將Ansi編碼的字符串,轉換成Unicode編碼的字符串
      strAnsi2Unicode = ""
      
    if isnull(asContents) or asContents="" then exit function
      len1
    =lenb(asContents)
      
    if len1=0 then exit function
      
    for i=1 to len1
          varchar
    =midb(asContents,i,1)
          varasc
    =ascb(varchar)
          
    if varasc > 127  then
             
    if midb(asContents,i+1,1)<>"" then
             strAnsi2Unicode 
    = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1& varchar))
             
    end if
             i
    =i+1
          
    else
             strAnsi2Unicode 
    = strAnsi2Unicode & chr(varasc)
          
    end if
      
    next
    End function

    Function Base64encode(asContents)  
    '將Ansi編碼的字符串進行Base64編碼
    '
    asContents應當是ANSI編碼的字符串(二進制的字符串也可以)
    Dim lnPosition  
    Dim lsResult  
    Dim Char1  
    Dim Char2  
    Dim Char3  
    Dim Char4  
    Dim Byte1  
    Dim Byte2  
    Dim Byte3  
    Dim SaveBits1  
    Dim SaveBits2  
    Dim lsGroupBinary  
    Dim lsGroup64  
    Dim m3,m4,len1,len2

    len1
    =Lenb(asContents)
    if len1<1 then 
       Base64encode
    =""
       
    exit Function
    end if

    m3
    =Len1 Mod 3 
    If M3 > 0 Then asContents = asContents & String(3-M3, chrb(0))  
    '補足位數是為了便於計算

    IF m3 > 0 THEN 
       len1
    =len1+(3-m3)
       len2
    =len1-3
    else
       len2
    =len1
    end if

    lsResult 
    = ""  

    For lnPosition = 1 To len2 Step 3  
        lsGroup64 
    = ""  
        lsGroupBinary 
    = Midb(asContents, lnPosition, 3)  

        Byte1 
    = Ascb(Midb(lsGroupBinary, 11)): SaveBits1 = Byte1 And 3  
        Byte2 
    = Ascb(Midb(lsGroupBinary, 21)): SaveBits2 = Byte2 And 15  
        Byte3 
    = Ascb(Midb(lsGroupBinary, 31))  

        Char1 
    = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252\ 4+ 11)  
        Char2 
    = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240\ 16Or (SaveBits1 * 16And &HFF) + 11)  
        Char3 
    = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192\ 64Or (SaveBits2 * 4And &HFF) + 11)  
        Char4 
    = Midb(sBASE_64_CHARACTERS, (Byte3 And 63+ 11)  
        lsGroup64 
    = Char1 & Char2 & Char3 & Char4  
        
        lsResult 
    = lsResult & lsGroup64  
    Next  

    '處理最後剩餘的幾個字符
    if M3 > 0  then
        lsGroup64 
    = ""  
        lsGroupBinary 
    = Midb(asContents, len2+13)  

        Byte1 
    = Ascb(Midb(lsGroupBinary, 11)): SaveBits1 = Byte1 And 3  
        Byte2 
    = Ascb(Midb(lsGroupBinary, 21)): SaveBits2 = Byte2 And 15  
        Byte3 
    = Ascb(Midb(lsGroupBinary, 31))  

        Char1 
    = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252\ 4+ 11)  
        Char2 
    = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240\ 16Or (SaveBits1 * 16And &HFF) + 11)  
        Char3 
    = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192\ 64Or (SaveBits2 * 4And &HFF) + 11)  

        
    if M3=1 then
           lsGroup64 
    = Char1 & Char2 & ChrB(61& ChrB(61)   '用=號補足位數
        else
           lsGroup64 
    = Char1 & Char2 & Char3 & ChrB(61)      '用=號補足位數
        end if
        
        lsResult 
    = lsResult & lsGroup64  
    end if

    Base64encode 
    = lsResult  

    End Function  


    Function Base64decode(asContents)  
    '將Base64編碼字符串轉換成Ansi編碼的字符串
    '
    asContents應當也是ANSI編碼的字符串(二進制的字符串也可以)
    Dim lsResult  
    Dim lnPosition  
    Dim lsGroup64, lsGroupBinary  
    Dim Char1, Char2, Char3, Char4  
    Dim Byte1, Byte2, Byte3  
    Dim M4,len1,len2

    len1
    = Lenb(asContents) 
    M4 
    = len1 Mod 4

    if len1 < 1 or M4 > 0 then
       
    '字符串長度應當是4的倍數
       Base64decode = ""  
       
    exit Function  
    end if
           
    '判斷最後一位是不是 = 號
    '
    判斷倒數第二位是不是 = 號
    '
    這裡m4表示最後剩餘的需要單獨處理的字符個數
    if midb(asContents, len1, 1= chrb(61)   then   m4=3 
    if midb(asContents, len1-11= chrb(61then   m4=2

    if m4 = 0 then
       len2
    =len1
    else
       len2
    =len1-4
    end if

    For lnPosition = 1 To Len2 Step 4  
        lsGroupBinary 
    = ""  
        lsGroup64 
    = Midb(asContents, lnPosition, 4)  
        Char1 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 11)) - 1  
        Char2 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 21)) - 1  
        Char3 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 31)) - 1  
        Char4 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 41)) - 1  
        Byte1 
    = Chrb(((Char2 And 48\ 16Or (Char1 * 4And &HFF)  
        Byte2 
    = lsGroupBinary & Chrb(((Char3 And 60\ 4Or (Char2 * 16And &HFF)  
        Byte3 
    = Chrb((((Char3 And 3* 64And &HFF) Or (Char4 And 63))  
        lsGroupBinary 
    = Byte1 & Byte2 & Byte3  
        
        lsResult 
    = lsResult & lsGroupBinary  
    Next 

    '處理最後剩餘的幾個字符
    if M4 > 0 then 
        lsGroupBinary 
    = ""  
        lsGroup64 
    = Midb(asContents, len2+1, m4) & chrB(65)   'chr(65)=A,轉換成值為0
        if M4=2 then                                          '補足4位,是為了便於計算 
            lsGroup64 = lsGroup64 & chrB(65)                  
        
    end if
        Char1 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 11)) - 1  
        Char2 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 21)) - 1  
        Char3 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 31)) - 1  
        Char4 
    = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 41)) - 1  
        Byte1 
    = Chrb(((Char2 And 48\ 16Or (Char1 * 4And &HFF)  
        Byte2 
    = lsGroupBinary & Chrb(((Char3 And 60\ 4Or (Char2 * 16And &HFF)  
        Byte3 
    = Chrb((((Char3 And 3* 64And &HFF) Or (Char4 And 63))  
      
        
    if M4=2 then
           lsGroupBinary 
    = Byte1
        
    elseif M4=3 then
           lsGroupBinary 
    = Byte1 & Byte2
        
    end if
        
        lsResult 
    = lsResult & lsGroupBinary  
    end if

    Base64decode 
    = lsResult  

    End Function  
    %
    >
    <%
    Private Const BITS_TO_A_BYTE = 8
    Private Const BYTES_TO_A_WORD = 4
    Private Const BITS_TO_A_WORD = 32

    Private m_lOnBits(30)
    Private m_l2Power(30)
    Dim Md5OLD
    Private Function LShift(lValue, iShiftBits)
        
    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 Function

    Private Function str2bin(varstr) 
        
    Dim varasc
        
    Dim i
        
    Dim varchar
        
    Dim varlow
        
    Dim varhigh
        
        str2bin
    ="" 
        
    For i=1 To Len(varstr) 
            varchar
    =mid(varstr,i,1
            varasc 
    = Asc(varchar) 
            
            
    If varasc<0 Then 
            varasc 
    = varasc + 65535 
            
    End If 
            
            
    If varasc>255 Then 
            varlow 
    = Left(Hex(Asc(varchar)),2
            varhigh 
    = right(Hex(Asc(varchar)),2
            str2bin 
    = str2bin & chrB("&H" & varlow) & chrB("&H" & varhigh) 
            
    Else 
            str2bin 
    = str2bin & chrB(AscB(varchar)) 
            
    End If 
        
    Next 
    End Function 

    Private Function RShift(lValue, iShiftBits)
        
    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 Function

    Private Function RotateLeft(lValue, iShiftBits)
        RotateLeft 
    = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
    End Function

    Private Function AddUnsigned(lX, lY)
        
    Dim lX4
        
    Dim lY4
        
    Dim lX8
        
    Dim lY8
        
    Dim lResult

        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 Function

    Private Function md5_F(x, y, z)
        md5_F 
    = (x And y) Or ((Not x) And z)
    End Function

    Private Function md5_G(x, y, z)
        md5_G 
    = (x And z) Or (y And (Not z))
    End Function

    Private Function md5_H(x, y, z)
        md5_H 
    = (x Xor y Xor z)
    End Function

    Private Function md5_I(x, y, z)
        md5_I 
    = (y Xor (x Or (Not z)))
    End Function

    Private Sub md5_FF(a, b, c, d, x, s, ac)
        a 
    = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
        a 
    = RotateLeft(a, s)
        a 
    = AddUnsigned(a, b)
    End Sub

    Private Sub md5_GG(a, b, c, d, x, s, ac)
        a 
    = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
        a 
    = RotateLeft(a, s)
        a 
    = AddUnsigned(a, b)
    End Sub

    Private Sub md5_HH(a, b, c, d, x, s, ac)
        a 
    = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
        a 
    = RotateLeft(a, s)
        a 
    = AddUnsigned(a, b)
    End Sub

    Private Sub md5_II(a, b, c, d, x, s, ac)
        a 
    = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
        a 
    = RotateLeft(a, s)
        a 
    = AddUnsigned(a, b)
    End Sub

    Private Function ConvertToWordArray(sMessage)
        
    Dim lMessageLength
        
    Dim lNumberOfWords
        
    Dim lWordArray()
        
    Dim lBytePosition
        
    Dim lByteCount
        
    Dim lWordCount
        
    Const MODULUS_BITS = 512
        
    Const CONGRUENT_BITS = 448
        
    If Md5OLD = 1 Then
            lMessageLength 
    = Len(sMessage)
        
    Else
            lMessageLength 
    = LenB(sMessage)
        
    End If
        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
            
    If Md5OLD = 1 Then
                lWordArray(lWordCount) 
    = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 11)), lBytePosition)
            
    Else
                lWordArray(lWordCount) 
    = lWordArray(lWordCount) Or LShift(AscB(MidB(sMessage, lByteCount + 11)), lBytePosition)
            
    End If
            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

    Private Function WordToHex(lValue)
        
    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 Function

    Public Function MD5(sMessage,stype)
        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)
        
        
        
    Dim x
        
    Dim k
        
    Dim AA
        
    Dim BB
        
    Dim CC
        
    Dim DD
        
    Dim a
        
    Dim b
        
    Dim c
        
    Dim d
        
        
    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
        
    If Md5OLD = 1 Then
            x 
    = ConvertToWordArray(sMessage)
        
    Else
            x 
    = ConvertToWordArray(str2bin(sMessage))
        
    End If
        a 
    = &H67452301
        b 
    = &HEFCDAB89
        c 
    = &H98BADCFE
        d 
    = &H10325476
        
        
    For k = 0 To UBound(x) Step 16
            AA 
    = a
            BB 
    = b
            CC 
    = c
            DD 
    = d
            
            md5_FF a, b, c, d, x(k 
    + 0), S11, &HD76AA478
            md5_FF d, a, b, c, x(k 
    + 1), S12, &HE8C7B756
            md5_FF c, d, a, b, x(k 
    + 2), S13, &H242070DB
            md5_FF b, c, d, a, x(k 
    + 3), S14, &HC1BDCEEE
            md5_FF a, b, c, d, x(k 
    + 4), S11, &HF57C0FAF
            md5_FF d, a, b, c, x(k 
    + 5), S12, &H4787C62A
            md5_FF c, d, a, b, x(k 
    + 6), S13, &HA8304613
            md5_FF b, c, d, a, x(k 
    + 7), S14, &HFD469501
            md5_FF a, b, c, d, x(k 
    + 8), S11, &H698098D8
            md5_FF d, a, b, c, x(k 
    + 9), S12, &H8B44F7AF
            md5_FF c, d, a, b, x(k 
    + 10), S13, &HFFFF5BB1
            md5_FF b, c, d, a, x(k 
    + 11), S14, &H895CD7BE
            md5_FF a, b, c, d, x(k 
    + 12), S11, &H6B901122
            md5_FF d, a, b, c, x(k 
    + 13), S12, &HFD987193
            md5_FF c, d, a, b, x(k 
    + 14), S13, &HA679438E
            md5_FF b, c, d, a, x(k 
    + 15), S14, &H49B40821
            
            md5_GG a, b, c, d, x(k 
    + 1), S21, &HF61E2562
            md5_GG d, a, b, c, x(k 
    + 6), S22, &HC040B340
            md5_GG c, d, a, b, x(k 
    + 11), S23, &H265E5A51
            md5_GG b, c, d, a, x(k 
    + 0), S24, &HE9B6C7AA
            md5_GG a, b, c, d, x(k 
    + 5), S21, &HD62F105D
            md5_GG d, a, b, c, x(k 
    + 10), S22, &H2441453
            md5_GG c, d, a, b, x(k 
    + 15), S23, &HD8A1E681
            md5_GG b, c, d, a, x(k 
    + 4), S24, &HE7D3FBC8
            md5_GG a, b, c, d, x(k 
    + 9), S21, &H21E1CDE6
            md5_GG d, a, b, c, x(k 
    + 14), S22, &HC33707D6
            md5_GG c, d, a, b, x(k 
    + 3), S23, &HF4D50D87
            md5_GG b, c, d, a, x(k 
    + 8), S24, &H455A14ED
            md5_GG a, b, c, d, x(k 
    + 13), S21, &HA9E3E905
            md5_GG d, a, b, c, x(k 
    + 2), S22, &HFCEFA3F8
            md5_GG c, d, a, b, x(k 
    + 7), S23, &H676F02D9
            md5_GG b, c, d, a, x(k 
    + 12), S24, &H8D2A4C8A
            
            md5_HH a, b, c, d, x(k 
    + 5), S31, &HFFFA3942
            md5_HH d, a, b, c, x(k 
    + 8), S32, &H8771F681
            md5_HH c, d, a, b, x(k 
    + 11), S33, &H6D9D6122
            md5_HH b, c, d, a, x(k 
    + 14), S34, &HFDE5380C
            md5_HH a, b, c, d, x(k 
    + 1), S31, &HA4BEEA44
            md5_HH d, a, b, c, x(k 
    + 4), S32, &H4BDECFA9
            md5_HH c, d, a, b, x(k 
    + 7), S33, &HF6BB4B60
            md5_HH b, c, d, a, x(k 
    + 10), S34, &HBEBFBC70
            md5_HH a, b, c, d, x(k 
    + 13), S31, &H289B7EC6
            md5_HH d, a, b, c, x(k 
    + 0), S32, &HEAA127FA
            md5_HH c, d, a, b, x(k 
    + 3), S33, &HD4EF3085
            md5_HH b, c, d, a, x(k 
    + 6), S34, &H4881D05
            md5_HH a, b, c, d, x(k 
    + 9), S31, &HD9D4D039
            md5_HH d, a, b, c, x(k 
    + 12), S32, &HE6DB99E5
            md5_HH c, d, a, b, x(k 
    + 15), S33, &H1FA27CF8
            md5_HH b, c, d, a, x(k 
    + 2), S34, &HC4AC5665
            
            md5_II a, b, c, d, x(k 
    + 0), S41, &HF4292244
            md5_II d, a, b, c, x(k 
    + 7), S42, &H432AFF97
            md5_II c, d, a, b, x(k 
    + 14), S43, &HAB9423A7
            md5_II b, c, d, a, x(k 
    + 5), S44, &HFC93A039
            md5_II a, b, c, d, x(k 
    + 12), S41, &H655B59C3
            md5_II d, a, b, c, x(k 
    + 3), S42, &H8F0CCC92
            md5_II c, d, a, b, x(k 
    + 10), S43, &HFFEFF47D
            md5_II b, c, d, a, x(k 
    + 1), S44, &H85845DD1
            md5_II a, b, c, d, x(k 
    + 8), S41, &H6FA87E4F
            md5_II d, a, b, c, x(k 
    + 15), S42, &HFE2CE6E0
            md5_II c, d, a, b, x(k 
    + 6), S43, &HA3014314
            md5_II b, c, d, a, x(k 
    + 13), S44, &H4E0811A1
            md5_II a, b, c, d, x(k 
    + 4), S41, &HF7537E82
            md5_II d, a, b, c, x(k 
    + 11), S42, &HBD3AF235
            md5_II c, d, a, b, x(k 
    + 2), S43, &H2AD7D2BB
            md5_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
        
        
    if stype=32 then
        MD5 
    = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
        
    else
        MD5
    =LCase(WordToHex(b) & WordToHex(c))  'I crop this to fit 16byte database password :D
        end if
    End Function
    %
    >
    <%
    '-----------------------------------------------------------------------
    '
    --- EMAIL郵件處理類模塊
    '
    --- Copyright (c) 2004 Aspsky, Inc.
    '
    --- Mail: Sunwin@artbbs.net   http://www.aspsky.net
    '
    --- 2004-12-18
    '
    -----------------------------------------------------------------------
    '
    --- 設置項
    '
    -----------------------------------------------------------------------
    '
    --- ServerLoginName    設置您的郵件服務器登錄名
    '
    --- ServerLoginPass    設置登錄密碼
    '
    --- SendSMTP            設置SMTP郵件服務器地址
    '
    --- SendFromEmail        設置發件人的E-MAIL地址
    '
    --- SendFromName        設置發送人名稱
    '
    --- ContentType        設置郵件類型 默認:text/html
    '
    --- CharsetType        設置編碼類型 默認:gb2312
    '
    --- SendObject            設置選取組件 1=Jmail,2=Cdonts,3=Aspemail
    '
    -----------------------------------------------------------------------
    '
    --- 屬性
    '
    -----------------------------------------------------------------------
    '
    --- SendMail Email, Topic, MailBody    收件人地址,標題,郵件內容
    '
    -----------------------------------------------------------------------
    '
    --- 獲取信息
    '
    -----------------------------------------------------------------------
    '
    --- ErrCode            信息編號 0=正常
    '
    --- Description        相應操作信息
    '
    --- Count                發送郵件數
    '
    -----------------------------------------------------------------------
    Class Dv_SendMail
        
    Public Count,ErrCode,ErrMsg
        
    Private LoginName,LoginPass,SMTP,FromEmail,FromName,Object,Content_Type,Charset_Type
        
    Private Obj,cdoConfig

        
    Private Sub Class_Initialize()
            
    Object = 0
            Count 
    = 0
            ErrCode 
    = 0
            Content_Type 
    = "text/html"
            Charset_Type 
    = "gb2312"
        
    End Sub

        
    Private Sub Class_Terminate()
            
    If Isobject(Obj) Then
                
    Set Obj = Nothing
            
    End If
            
    If IsObject(cdoConfig) Then
                
    Set cdoConfig = Nothing
            
    End If
        
    End Sub

        
    '設置您的郵件服務器登錄名
        Public Property Let ServerLoginName(Byval Value)
            LoginName 
    = Value
        
    End Property

        
    '設置登錄密碼
        Public Property Let ServerLoginPass(Byval Value)
            LoginPass 
    = Value
        
    End Property
        
    '設置SMTP郵件服務器地址
        Public Property Let SendSMTP(Byval Value)
            SMTP 
    = Value
        
    End Property
        
    '設置發件人的E-MAIL地址
        Public Property Let SendFromEmail(Byval Value)
            FromEmail 
    = Value
        
    End Property
        
    '設置發送人名稱
        Public Property Let SendFromName(Byval Value)
            FromName 
    = Value
        
    End Property
        
    '設置郵件類型
        Public Property Let ContentType(Byval Value)
            Content_Type 
    = Value
        
    End Property
        
    '設置編碼類型
        Public Property Let CharsetType(Byval Value)
            Charset_Type 
    = Cstr(Value)
        
    End Property
        
    '獲取錯誤信息
        Public Property Get Description()
            Description 
    = ErrMsg
        
    End Property
        
    '設置選取組件 SendObject 0=Jmail,1=Cdonts,2=Aspemail
        Public Property Let SendObject(Byval Value)
            
    Object = Value
            
    On Error Resume Next
            
    Select Case Object
                
    Case 1
                    
    Set Obj = Server.CreateObject("JMail.Message")
                
    Case 2
                    
    Set Obj = Server.CreateObject("CDONTS.NewMail")
                
    Case 3
                    
    Set Obj = Server.CreateObject("Persits.MailSender")
                
    Case 4
                    
    Set Obj = Server.CreateObject("CDO.Message")    'window 2003 new SendMailCom Object
                Case Else
                    ErrNumber 
    = 2
            
    End Select
            
    If Err<>0 Then
                ErrNumber 
    = 3
            
    End If
        
    End Property

        
    Private Property Let ErrNumber(Byval Value)
            ErrCode 
    = Value
            ErrMsg 
    = ErrMsg & Msg
        
    End Property
        
    Private Function Msg()
            
    Dim MsgValue
            
    Select Case ErrCode
            
    Case 1
                MsgValue 
    = "未選取郵件組件或服務器不支持該組件!"
            
    Case 2
                MsgValue 
    = "所選的組件不存在!"
            
    Case 3
                MsgValue 
    = "錯誤:服務器不支持該組件!"
            
    Case 4
                MsgValue 
    = "發送失敗!"
            
    Case Else
                MsgValue 
    = "正常。"
            
    End Select
            Msg 
    = MsgValue
        
    End Function

        
    Public Sub SendMail(Byval Email,Byval Topic,Byval MailBody)
            
    If ErrCode <> 0 Then
                
    Exit Sub
            
    End If
            
    If Email="" or ISNull(Email) Then Exit Sub
            
    If Object>0 Then
                
    Select Case Object
                    
    Case 1
                        Jmail Email,Topic,MailBody
                    
    Case 2
                        Cdonts Email,Topic,Mailbody
                    
    Case 3
                        Aspemail Email,Topic,Mailbody
                    
    Case 4
                        CDOMessage Email,Topic,Mailbody
                    
    Case Else
                        ErrNumber 
    = 2
                
    End Select
            
    Else
                ErrNumber 
    = 1
            
    End If
        
    End Sub

        
    Private Sub Jmail(Email,Topic,Mailbody)
            
    On Error Resume Next
            Obj.Silent 
    = True
            Obj.Logging 
    = True
            Obj.Charset 
    = Charset_Type
            
    If Not(LoginName = "" Or LoginPass = ""Then
                Obj.MailServerUserName 
    = LoginName '您的郵件服務器登錄名
                Obj.MailServerPassword = LoginPass '登錄密碼
            End If
            Obj.ContentType 
    = Content_Type
            Obj.Priority 
    = 1
            Obj.From 
    = FromEmail
            Obj.FromName 
    = FromName
            Obj.AddRecipient Email
            Obj.Subject 
    = Topic
            Obj.Body 
    = Mailbody
            
    If Err<>0 Then
                ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                ErrNumber 
    = 4
            
    Else
                Obj.Send (SMTP)
                Obj.ClearRecipients()
                
    If Err<>0 Then
                    ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                    ErrNumber 
    = 4
                
    Else
                    Count 
    = Count + 1
                    ErrMsg 
    = ErrMsg & "發送成功!"
                
    End If
            
    End If
        
    End Sub
            
        
    Private Sub Cdonts(Email,Topic,Mailbody)
            
    On Error Resume Next
            Obj.From 
    = FromEmail
            Obj.To 
    = Email
            Obj.Subject 
    = Topic
            Obj.BodyFormat 
    = 0 
            Obj.MailFormat 
    = 0 
            Obj.Body 
    = Mailbody
            
    If Err<>0 Then
                ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                ErrNumber 
    = 4
            
    Else
                Obj.Send
                
    If Err<>0 Then
                    ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                    ErrNumber 
    = 4
                
    Else
                    Count 
    = Count + 1
                    ErrMsg 
    = ErrMsg & "發送成功!"
                
    End If
            
    End If
        
    End Sub

        
    Private Sub Aspemail(Email,Topic,Mailbody)
            
    On Error Resume Next
            Obj.Charset 
    = Charset_Type
            Obj.IsHTML 
    = True
            Obj.username 
    = LoginName    '服務器上有效的用戶名
            Obj.password = LoginPass    '服務器上有效的密碼
            Obj.Priority = 1
            Obj.Host 
    = SMTP
            
    'Obj.Port = 25            ' 該項可選.端口25是默認值
            Obj.From = FromEmail
            Obj.FromName 
    = FromName    ' 該項可選
            Obj.AddAddress Email,Email
            Obj.Subject 
    = Topic
            Obj.Body 
    = Mailbody
            
    If Err<>0 Then
                ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                ErrNumber 
    = 4
            
    Else
                Obj.Send
                
    If Err<>0 Then
                    ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                    ErrNumber 
    = 4
                
    Else
                    Count 
    = Count + 1
                    ErrMsg 
    = ErrMsg & "發送成功!"
                
    End If
            
    End If
        
    End Sub

        
    Private Sub CDOMessage(Email,Topic,Mailbody)
            
    On Error Resume Next
            
    If Not IsObject(cdoConfig) Then
                
    Call CreatCDOConfig()
            
    End If
            
    Set Obj = Server.CreateObject("CDO.Message"
            
    With Obj 
                
    Set .Configuration = cdoConfig 
                
    '.From = FromEmail
                .To = Email
                .Subject 
    = Topic 
                .TextBody 
    = Mailbody
                .Send
            
    End With
            
    If Err<>0 Then
                ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                ErrNumber 
    = 4
            
    Else
                Count 
    = Count + 1
                ErrMsg 
    = ErrMsg & "發送成功!"
            
    End If
        
    End Sub

        
    Private Sub CreatCDOConfig()
            
    On Error Resume Next
            
    Dim Sch
            sch 
    = "http://schemas.microsoft.com/cdo/configuration/"
            
    Set cdoConfig = Server.CreateObject("CDO.Configuration")
            
    With cdoConfig.Fields 
                .Item(sch 
    & "smtpserver"= SMTP
                
    '.Item(sch & "smtpserverport") = 25
                .Item(sch & "sendusing"= 2                    'cdoSendUsingPort CdoSendUsing enum value =  2
                .Item(sch & "smtpaccountname"= FromName        '"My Name"
                .Item(sch & "sendemailaddress"= FromEmail        '"""MySelf"" <example@example.com>"
                .Item(sch & "smtpuserreplyemailaddress"= 25    '"""Another"" <another@example.com>"
                '.Item(sch & "smtpauthenticate") = cdoBasic
                .Item(sch & "sendusername"= LoginName
                .Item(sch 
    & "sendpassword"= LoginPass
                .update 
            
    End With
            
    If Err<>0 Then
                ErrMsg 
    = ErrMsg & "發送失敗!原因:" & Err.Description
                ErrNumber 
    = 4
            
    End If
        
    End Sub
    End Class
    %
    >
    var dv_ajax_debug_mode = false;
            
    function dvajax_debug(text) {
        
    if (dv_ajax_debug_mode)
        alert(
    "RSD: " + text);
    }

    function dvajax_init_object() {
        dvajax_debug(
    "dvajax_init_object() called..");    
        
    var RetValue;
        
    try {
                RetValue 
    = new ActiveXObject("Msxml2.XMLHTTP");
            } 
    catch (e) {
            
    try {
            RetValue 
    = new ActiveXObject("Microsoft.XMLHTTP");
            } 
    catch (oc) {
            RetValue 
    = null;
            }
        }
        
    if(!RetValue && typeof XMLHttpRequest != "undefined")
            RetValue 
    = new XMLHttpRequest();
            
    if (!RetValue)
                dvajax_debug(
    "Could not create connection object.");
            
    return RetValue;
    }

    function dvajax_run(func_name,func_obj, args) {
        
    var i, x, n;
        
    var uri;
        
    var post_data;
        uri 
    = "ajax_check.asp";
        
    if (dvajax_request_type == "GET") {
            
    if (uri.indexOf("?"== -1
                uri 
    = uri + "?rs=" + func_name;
            
    else
                uri 
    = uri + "&rs=" + func_name;
                
    for (i = 0; i < args.length-1; i++
                    uri 
    = uri + "&rsargs[]=" + args[i];
                    uri 
    = uri + "&rsrnd=" + new Date().getTime();
                    post_data 
    = null;
        } 
    else {
                    post_data 
    = "rs=" + func_name;
                    
    for (i = 0; i < args.length-1; i++
                        post_data 
    = post_data + "&rsargs[]=" + urlencode(args[i]);
        }
                
                x 
    = dvajax_init_object();
                x.open(dvajax_request_type, uri, 
    true);
                
    if (dvajax_request_type == "POST") {
                    x.setRequestHeader(
    "Method""POST " + uri + " HTTP/1.1");
                    x.setRequestHeader(
    "Content-Type""application/x-www-form-urlencoded");
                }
                x.onreadystatechange 
    = function() {
                    
    if (x.readyState != 4
                        
    return;
                    dvajax_debug(
    "received " + x.responseText);                
                    
    var status;
                    
    var data;
                    status 
    = x.responseText.charAt(0);
                    datacache 
    = x.responseText.substring(0);
                    data 
    = unescape(datacache);
                    
    if (status == "-"
                        alert(
    "Error: " + data);
                    
    else  
                        args[args.length
    -1](func_obj,data);
                }
        x.send(post_data);
        dvajax_debug(func_name 
    + " uri = " + uri + "/post = " + post_data);
        dvajax_debug(func_name 
    + " waiting..");
        
    delete x;
    }

    function obj_getbyid(id) {
        itm 
    = null;
        
    if (document.getElementById) {
            itm 
    = document.getElementById(id);
        } 
    else if (document.all)    {
            itm 
    = document.all[id];
        } 
    else if (document.layers) {
            itm 
    = document.layers[id];
        }
        
    return itm;
    }

    function dv_ajaxcheck(seltype,objid){
        
    var objname = obj_getbyid(objid).value;
            
    if (objname){
                x_checkdata(seltype,objid,objname,checkuser_cb);
            }
    }

    function checkuser_cb(c_type,data){
        
    var isok_username = obj_getbyid("isok_"+c_type);
        
    if (isok_username)
        {
            isok_username.innerHTML 
    = "&nbsp;"+data;
        }
    }

    function x_checkdata(x_seltype,x_obj) {
        dvajax_run(x_seltype,x_obj,x_checkdata.arguments);
    }

    function urlencode(text){
        text 
    = text.toString();
        
    var matches = text.match(/[\x90-\xFF]/g);
        
    if (matches)
        {
            
    for (var matchid = 0; matchid < matches.length; matchid++)
            {
                
    var char_code = matches[matchid].charCodeAt(0);
                text 
    = text.replace(matches[matchid], '%u00' + (char_code & 0xFF).toString(16).toUpperCase());
            }
        }
        
    return escape(text).replace(/\+/g, "%2B");
    }


    var RegCheck = {
        passValue : 
    new Array(),
        pass : 
    function(v,Objid,t){
            
    var isok_pass = obj_getbyid("isok_"+Objid);
            RegCheck.passValue[t] 
    = v;
            
    if (v.length<6||v.length>10){
                    isok_pass.innerHTML 
    = err_msg("密碼不能少於6位或多於10位");
                    
    return false;
            }
    else{
                    isok_pass.innerHTML 
    = suc_msg("符合要求");
            }
            
    if (t==0){
                SetPwdStrengthEx(v);
            }
    else{
                
    if (RegCheck.passValue.length==2){
                    
    if (RegCheck.passValue[0]==RegCheck.passValue[1]){
                        isok_pass.innerHTML 
    = suc_msg("符合要求");
                    }
    else{
                        isok_pass.innerHTML 
    = err_msg("重復輸入密碼不符");
                        
    return false;
                    }
                    
                }
    else
                {
                    isok_pass.innerHTML 
    = err_msg("重復輸入密碼不符");
                    
    return false;
                }

            }
            
    return true;
        },

        Value : 
    function(v,Objid){
            
    var isok_pass = obj_getbyid("isok_"+Objid);
            
    if (v==''){
                isok_pass.innerHTML 
    = err_msg("必填內容,不能為空");
                
    return false;
            }
    else{
                
    return true;
            }
        }


    }


    //錯誤提示信息
    function err_msg(msg){
        
    return "<img src='"+forum_picurl+"/note_error.gif' border='0'/> <span class='redfont'>"+msg+"</span>";
    }
    //成功提示信息
    function suc_msg(msg){
        
    return "<img src='"+forum_picurl+"/note_ok.gif' border='0'/> <span class='bluefont'>"+msg+"</span>";
    }
    //檢查密碼強弱
    function pse_a1(j,b){
        
    this.j=j;this.b=b;
    };
    function pse_a7(c,j){
        
    var b=false;
        
    switch(j){
        
    case 0:
            
    if((c>='A')&&(c<='Z')){
                b
    =true;
            };
            
    break;
        
    case 1:
            
    if((c>='a')&&(c<='z')){
            b
    =true;
            };
            
    break;
        
    case 2:
            
    if((c>='0')&&(c<='9')){
            b
    =true;
            };
            
    break;
        
    case 3:
            
    if("!@#$%^&*()_+-='\";:[{]}\|.>,</?`~".indexOf(c)>=0){
            b=true;
            };
            
    break;
        
    case 4:
            
    if(pse_a7(c,0)||pse_a7(c,1)){
            b
    =true;
            };
            
    break;
        
    default:break;
        };
        
    return b;
    };

    function pse_a8(e,g){
        
    if((e==null)||isNaN(g)){
            
    return false;
        }
    else if(e.length<g){
            
    return false;
        };
        
    return true;
    };

    function pse_a10(e,f){
        
    var i=0;
        
    var jj=new Array(new pse_a1(0,false),new pse_a1(1,false),new pse_a1(2,false),new pse_a1(3,false));
        
    if((e==null)||isNaN(f)){
            
    return false;
        };
        
    for(var k=0;k<e.length;k++){
            
    for(var d=0;d<jj.length;d++){
                
    if(!jj[d].b&&pse_a7(e.charAt(k),jj[d].j)){
                    jj[d].b
    =true;break;
                };
            };
        };
        
    for(var d=0;d<jj.length;d++){if(jj[d].b){i++;};};if(i<f){return false;};return true;};function pse_a3(h){return(pse_a8(h,"7")&&pse_a10(h,"3"));};function pse_a2(h){return(pse_a8(h,"7")&&pse_a10(h,"2"));};function pse_a4(h){return(pse_a8(h,"5")||(!pse_a8(h,"0")));};function pse_a6(q){return document.getElementById(q);};

    function SetPwdStrengthEx(o){
        
    if(pse_a3(o)){
            pse_a5(
    3,'pse04');
        }
        
    else if(pse_a2(o)){
            pse_a5(
    2,'pse03');
        }
    else if(pse_a4(o)){pse_a5(1,'pse02');
        }
    else{
            pse_a5(
    0,'pse01');
            };
        };

    function pse_a5(m,p){if(m>3){m=3;};for(var n=0;n<4;n++){var l="pse01";if(n<=m){l=p;};if(n>0){pse_a6("idSM"+n).className=l;};pse_a6("idSMT"+n).style.display=((n==m)?"inline":"none");};};

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    Devrama Slider
    全栈开发必备的10款 Sublime Text 插件
    经典网页设计:使用颜色滤镜效果的20个网站
    Nibbler – 免费的网站测试和指标评分工具
    使用 HTML5 Canvas 绘制出惊艳的水滴效果
    Qt4 和 Qt5 模块的分类
    设计Qt风格的C++API
    Qt属性系统
    Qt实现艺术字效果
    Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)
  • 原文地址:https://www.cnblogs.com/Athrun/p/1005472.html
Copyright © 2020-2023  润新知