关闭
_cuclife.com
当前位置:cuclife.com > 电脑技术 > ASP >

MD5 加密算法示例

以下示例是MD5算法在ASP源码,

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

文章来源:互联网 本站编辑:佚名
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
趣闻*视频
相关文章