Results 1 to 3 of 3

Thread: ASP to c programming

  1. #1
    Join Date
    Jan 2007
    Location
    heaven , Malaysia
    Beans
    806

    ASP to c programming

    i hope anybody can rewrite code using C.i'm having hard time to understand the sequence because i don't know ASP language

    PHP Code:
    <%


    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)
     
        
    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)

    Private Function 
    LShift(lValueiShiftBits)
        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 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 
    RShift(lValueiShiftBits)
        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 Or iShiftBits 31 Then
            Err
    .Raise 6
        End 
    If
        
        
    RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)

        If (
    lValue And &H80000000Then
            RShift 
    = (RShift Or (&H40000000 m_l2Power(iShiftBits 1)))
        
    End If
    End Function

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

    Private Function 
    AddUnsigned(lXlY)
        
    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 
    F(xyz)
        
    = (And y) Or ((Not x) And z)
    End Function

    Private Function 
    G(xyz)
        
    = (And z) Or (And (Not z))
    End Function

    Private Function 
    H(xyz)
        
    = (Xor Xor z)
    End Function

    Private Function 
    I(xyz)
        
    = (Xor (Or (Not z)))
    End Function

    Private 
    Sub FF(abcdxsac)
        
    AddUnsigned(aAddUnsigned(AddUnsigned(F(bcd), x), ac))
        
    RotateLeft(as)
        
    AddUnsigned(ab)
    End Sub

    Private Sub GG(abcdxsac)
        
    AddUnsigned(aAddUnsigned(AddUnsigned(G(bcd), x), ac))
        
    RotateLeft(as)
        
    AddUnsigned(ab)
    End Sub

    Private Sub HH(abcdxsac)
        
    AddUnsigned(aAddUnsigned(AddUnsigned(H(bcd), x), ac))
        
    RotateLeft(as)
        
    AddUnsigned(ab)
    End Sub

    Private Sub II(abcdxsac)
        
    AddUnsigned(aAddUnsigned(AddUnsigned(I(bcd), x), ac))
        
    RotateLeft(as)
        
    AddUnsigned(ab)
    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
        
        lMessageLength 
    Len(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(Asc(Mid(sMessagelByteCount 11)), 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(&H80lBytePosition)

        
    lWordArray(lNumberOfWords 2) = LShift(lMessageLength3)
        
    lWordArray(lNumberOfWords 1) = RShift(lMessageLength29)
        
        
    ConvertToWordArray lWordArray
    End 
    Function

    Private Function 
    WordToHex(lValue)
        
    Dim lByte
        Dim lCount
        
        
    For lCount 0 To 3
            lByte 
    RShift(lValuelCount 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)
        
    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

        x 
    ConvertToWordArray(sMessage)
        
        
    = &H67452301
        b 
    = &HEFCDAB89
        c 
    = &H98BADCFE
        d 
    = &H10325476

        
    For 0 To UBound(xStep 16
            AA 
    a
            BB 
    b
            CC 
    c
            DD 
    d
        
            FF a
    bcdx(0), S11, &HD76AA478
            FF d
    abcx(1), S12, &HE8C7B756
            FF c
    dabx(2), S13, &H242070DB
            FF b
    cdax(3), S14, &HC1BDCEEE
            FF a
    bcdx(4), S11, &HF57C0FAF
            FF d
    abcx(5), S12, &H4787C62A
            FF c
    dabx(6), S13, &HA8304613
            FF b
    cdax(7), S14, &HFD469501
            FF a
    bcdx(8), S11, &H698098D8
            FF d
    abcx(9), S12, &H8B44F7AF
            FF c
    dabx(10), S13, &HFFFF5BB1
            FF b
    cdax(11), S14, &H895CD7BE
            FF a
    bcdx(12), S11, &H6B901122
            FF d
    abcx(13), S12, &HFD987193
            FF c
    dabx(14), S13, &HA679438E
            FF b
    cdax(15), S14, &H49B40821
        
            GG a
    bcdx(1), S21, &HF61E2562
            GG d
    abcx(6), S22, &HC040B340
            GG c
    dabx(11), S23, &H265E5A51
            GG b
    cdax(0), S24, &HE9B6C7AA
            GG a
    bcdx(5), S21, &HD62F105D
            GG d
    abcx(10), S22, &H2441453
            GG c
    dabx(15), S23, &HD8A1E681
            GG b
    cdax(4), S24, &HE7D3FBC8
            GG a
    bcdx(9), S21, &H21E1CDE6
            GG d
    abcx(14), S22, &HC33707D6
            GG c
    dabx(3), S23, &HF4D50D87
            GG b
    cdax(8), S24, &H455A14ED
            GG a
    bcdx(13), S21, &HA9E3E905
            GG d
    abcx(2), S22, &HFCEFA3F8
            GG c
    dabx(7), S23, &H676F02D9
            GG b
    cdax(12), S24, &H8D2A4C8A
                
            HH a
    bcdx(5), S31, &HFFFA3942
            HH d
    abcx(8), S32, &H8771F681
            HH c
    dabx(11), S33, &H6D9D6122
            HH b
    cdax(14), S34, &HFDE5380C
            HH a
    bcdx(1), S31, &HA4BEEA44
            HH d
    abcx(4), S32, &H4BDECFA9
            HH c
    dabx(7), S33, &HF6BB4B60
            HH b
    cdax(10), S34, &HBEBFBC70
            HH a
    bcdx(13), S31, &H289B7EC6
            HH d
    abcx(0), S32, &HEAA127FA
            HH c
    dabx(3), S33, &HD4EF3085
            HH b
    cdax(6), S34, &H4881D05
            HH a
    bcdx(9), S31, &HD9D4D039
            HH d
    abcx(12), S32, &HE6DB99E5
            HH c
    dabx(15), S33, &H1FA27CF8
            HH b
    cdax(2), S34, &HC4AC5665
        
            II a
    bcdx(0), S41, &HF4292244
            II d
    abcx(7), S42, &H432AFF97
            II c
    dabx(14), S43, &HAB9423A7
            II b
    cdax(5), S44, &HFC93A039
            II a
    bcdx(12), S41, &H655B59C3
            II d
    abcx(3), S42, &H8F0CCC92
            II c
    dabx(10), S43, &HFFEFF47D
            II b
    cdax(1), S44, &H85845DD1
            II a
    bcdx(8), S41, &H6FA87E4F
            II d
    abcx(15), S42, &HFE2CE6E0
            II c
    dabx(6), S43, &HA3014314
            II b
    cdax(13), S44, &H4E0811A1
            II a
    bcdx(4), S41, &HF7537E82
            II d
    abcx(11), S42, &HBD3AF235
            II c
    dabx(2), S43, &H2AD7D2BB
            II b
    cdax(9), S44, &HEB86D391
        
            a 
    AddUnsigned(aAA)
            
    AddUnsigned(bBB)
            
    AddUnsigned(cCC)
            
    AddUnsigned(dDD)
        
    Next
        
        MD5 
    LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
    End Function
    %> 
    もう誰かのためじゃなくて 自分のために笑っていいよ
    ~ Please do mark as resolved thread if your problem is solved,thanks~

  2. #2
    Join Date
    Jul 2008
    Beans
    1,706

    Re: ASP to c programming

    ewwww vbscript...

  3. #3
    Join Date
    Sep 2007
    Beans
    56

    Re: ASP to c programming

    So you just want a md5-function for c?
    Why don't you just use some library or make a google search?

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •