sp; 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
Public Shared Function RShift(ByVal lValue As Long, ByVal iShiftBits As Integer) 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 Function
Public Shared Function RotateLeft(ByVal lValue As Long, ByVal iShiftBits As Integer) As Long RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits)) End Function
Private Shared 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 Function
Private Shared Function md5_F(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long md5_F = (x And y) Or ((Not x) And z) End Function
Private Shared Function md5_G(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long md5_G = (x And z) Or (y And (Not z)) End Function
Private Shared Function md5_H(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long md5_H = (x Xor y Xor z) End Function
Private Shared Function md5_I(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long md5_I = (y Xor (x Or (Not z))) End Function
Private Shared Sub md5_FF(ByRef 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(md5_F(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub
Private Shared Sub md5_GG(ByRef 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(md5_G(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub
Private Shared Sub md5_HH(ByRef 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(md5_H(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub
Private Shared Sub md5_II(ByRef 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( 上一页 [1] [2] [3] [4] [5] [6] 下一页 [VB.NET程序]VB的ShowInTaskbar功能分析以及用VC的实现 [Delphi程序]TFontNameComboBox及TFontSizeComboBox的实现 [Delphi程序]TManagedDataSet和DataSetPool的实现 [Delphi程序]MSN / QQ 中的动画表情 在Delphi中RichEdit的实现… [Web开发]利用JS获取IE客户端IP及MAC的实现 [Web开发]ASP.Net ViewState的实现 [Web开发]vb.net_asp.net跨栏表头_滚动表体的DataGrid的实现 [Web开发]无限分类算法 js 的实现 [JAVA开发]关于UDDI的实现 [SyBase]InnoDB 中文参考手册 --- 10 multiversioning 的实…
|