Option Explicit Option Base 0
Public Type MD5_CTX i(1) As Long buf(3) As Long inc(63) As Byte digest(15) As Byte End Type
Public Declare Sub MD5Init Lib "Cryptdll.dll" (ByVal pContex As Long) Public Declare Sub MD5Final Lib "Cryptdll.dll" (ByVal pContex As Long) Public Declare Sub MD5Update Lib "Cryptdll.dll" (ByVal pContex As Long, ByVal lPtr As Long, ByVal nSize As Long)
Public Function ConvBytesToBinaryString(bytesIn() As Byte) As String Dim i As Long Dim nSize As Long Dim strRet As String nSize = UBound(bytesIn) For i = 0 To nSize strRet = strRet & Right$("0" & Hex(bytesIn(i)), 2) Next ConvBytesToBinaryString = strRet End Function
Public Function GetMD5Hash(bytesIn() As Byte) As Byte() Dim ctx As MD5_CTX Dim nSize As Long nSize = UBound(bytesIn) + 1 MD5Init VarPtr(ctx) MD5Update ByVal VarPtr(ctx), ByVal VarPtr(bytesIn(0)), nSize MD5Final VarPtr(ctx) GetMD5Hash = ctx.digest End Function
Public Function GetMD5Hash_Bytes(bytesIn() As Byte) As String GetMD5Hash_Bytes = ConvBytesToBinaryString(GetMD5Hash(bytesIn)) End Function
Public Function GetMD5Hash_String(ByVal strIn As String) As String GetMD5Hash_String = GetMD5Hash_Bytes(StrConv(strIn, vbFromUnicode)) End Function
Public Function GetMD5Hash_File(ByVal strFile As String) As String Dim lFile As Long Dim bytes() As Byte Dim lSize As Long lSize = FileLen(strFile) If (lSize) Then lFile = FreeFile ReDim bytes(lSize - 1) Open strFile For Binary As lFile Get lFile, , bytes Close lFile GetMD5Hash_File = GetMD5Hash_Bytes(bytes) End If End Function
{$MY_AD_Squar_article_left} |