VB中实现MD5加密[7]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 bucher 的 blog

    if bits = 0 then longleftrotate = value: exit function
    for lngi = 1 to bits
        lngsign = value and &hc0000000
        value = (value and &h3fffffff) * 2
        value = value or ((lngsign < 0) and 1) or (cbool(lngsign and _
                &h40000000) and &h80000000)
    next
    longleftrotate = value
end function

'
' function to add two unsigned numbers together as in c.
' overflows are ignored!
'
private function longoverflowadd(val1 as long, val2 as long) as long
    dim lnghighword as long
    dim lnglowword as long
    dim lngoverflow as long

    lnglowword = (val1 and &hffff&) + (val2 and &hffff&)
    lngoverflow = lnglowword \ 65536
    lnghighword = (((val1 and &hffff0000) \ 65536) + ((val2 and &hffff0000) \ 65536) + lngoverflow) and &hffff&
    longoverflowadd = unsignedtolong((lnghighword * 65536#) + (lnglowword and &hffff&))
end function

'
' function to add two unsigned numbers together as in c.
' overflows are ignored!
'
private function longoverflowadd4(val1 as long, val2 as long, val3 as long, val4 as long) as long
    dim lnghighword as long
    dim lnglowword as long
    dim lngoverflow as long

    lnglowword = (val1 and &hffff&) + (val2 and &hffff&) + (val3 and &hffff&) + (val4 and &hffff&)
    lngoverflow = lnglowword \ 65536
    lnghighword = (((val1 and &hffff0000) \ 65536) + _
                   ((val2 and &hffff0000) \ 65536) + _
                   ((val3 and &hffff0000) \ 65536) + _
                   ((val4 and &hffff0000) \ 65536) + _
                   lngoverflow) and &hffff&
    longoverflowadd4 = unsignedtolong((lnghighword * 65536#) + (lnglowword and &hffff&))
end function

'
' convert an unsigned double into a long
'
private function unsignedtolong(value as double) as long
        if value < 0 or value >= offset_4 then error 6 ' overflow
        if value <= maxint_4 then
          unsignedtolong = value
        else
          unsignedtolong = value - offset_4
        end if
      end function

'
' convert a long to an unsigned double
'
private function longtounsigned(value as long) as double
        if value < 0 then
          longtounsigned = value + offset_4
        else
          longtounsigned = value
        end if

本文关键:MD5,VB6
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top