VB6.0中实现MD5加密算法代码
来源:优易学  2011-9-13 8:35:21   【优易学:中国教育考试门户网】   资料下载   IT书店

  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
  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(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] [2] [3] [4] [5] [6] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训