本实例演示使用ADVAPI32.DLL里面三个未公开的API函数来计算字符串的MD5值。
代码如下:
'用户昵称: 留下些什么
'个人简介: 一个会做软件的货代
'优快云网址:https://blog.youkuaiyun.com/zezese
'电子邮箱:31319180@qq.com
Option Explicit
Private Type MD5_CTX
num(1) As Long
buf(3) As Long
inputBuf(63) As Byte
digest(15) As Byte
End Type
Private Declare Function MD5Init Lib "ADVAPI32.DLL" (ByVal lpCtx As Long) As Long
Private Declare Function MD5Update Lib "ADVAPI32.DLL" (ByVal lpCtx As Long, ByVal lpBuf As Long, ByVal nLen As Long) As Long
Private Declare Function MD5Final Lib "ADVAPI32.DLL" (ByVal lpCtx As Long) As Long
Function MD5String(ByVal strSrc As String) As String
Dim ctx As MD5_CTX, lpCtx As Long, strTmp As String
lpCtx = VarPtr(ctx)
Call MD5Init(lpCtx)
strTmp = StrConv(strSrc, vbFromUnicode)
Call MD5Update(lpCtx, StrPtr(strTmp), LenB(strTmp))
Call MD5Final(lpCtx)
strTmp = ""
Dim i As Integer
For i = 0 To 15
strTmp = strTmp & Format$(Hex(ctx.digest(i)), "00")
Next
MD5String = strTmp
End Function
Private Sub Command1_Click()
MsgBox MD5String("123")
End Sub