CryptoSys API Library Manual

MD5_BytesHash

Creates an MD5 message digest in Byte array format from a message in Byte array format.

VBA/VB6 Syntax

Public Declare Function MD5_BytesHash Lib "diCryptoSys.dll" (ByRef lpDigest As Byte, ByRef lpData As Byte, ByVal nDataLen As Long) As Long

nRet = MD5_BytesHash(abDigest(0), abData(0), nDataLen) ' Note the "(0)" after the byte array parameters

Returns (VBA/C)

If successful, the return value is 0; otherwise it returns a non-zero error code.

.NET Equivalent

Md5.BytesHash Method

C/C++ Syntax

long __stdcall MD5_BytesHash(unsigned char *digest, const unsigned char *lpData, long nDataLen);

Parameters

digest
[out] array to receive message digest.
lpData
[in] array containing the message to be hashed.
nDataLen
[in] containing number of bytes in the array.

Remarks

This function differs from other MD5 functions in that it creates a digest in Byte array format. This is particularly useful when you need to carry out repeated hash operations. lpDigest must be at least 16 (API_MAX_MD5_BYTES) bytes long.

Examples

    Dim nRet As Long
    Dim abData(2) As Byte   ' Create 3-byte array (NB zero-based)
    Dim abDigest(15) As Byte ' Create 16-byte array to receive digest
    
    ' Setup byte array with "abc"
    abData(0) = Asc("a")
    abData(1) = Asc("b")
    abData(2) = Asc("c")
    
    ' Compute MD5 hash digest
    nRet = MD5_BytesHash(abDigest(0), abData(0), 3)
    
    ' Print resulting bytes in hex format
    Debug.Print nRet; cnvHexStrFromBytes(abDigest)

This should result in output as follows:

 0 900150983CD24FB0D6963F7D28E17F72

This second example shows how to carry out repeated hashes of the digest.

    Dim nRet As Long
    Dim abData(2) As Byte   ' Create 3-byte array (NB zero-based)
    Dim abDigest(15) As Byte ' Create 16-byte array to receive digest
    Dim i As Integer
    
    ' Setup byte array with "abc"
    abData(0) = Asc("a")
    abData(1) = Asc("b")
    abData(2) = Asc("c")
    
    ' Compute MD5 hash digest of input
    nRet = MD5_BytesHash(abDigest(0), abData(0), 3)
    
    ' Now carry out repeated hashes of the 16-byte-long digest
    For i = 2 To 1000
        nRet = MD5_BytesHash(abDigest(0), abDigest(0), 16)
    Next
   
    ' Print H(1000) in hex format
    Debug.Print cnvHexStrFromBytes(abDigest)

This should result in output as follows:

1375514E02C36AAE265B2FE20CCADAFB

See Also

SHA1_BytesHash

[Contents] [Index]

[PREV: MD5_AddString...]   [Contents]   [Index]   
   [NEXT: MD5_BytesHexHash...]

Copyright © 2001-24 D.I. Management Services Pty Ltd. All rights reserved. Generated 2024-01-07T07:42:00Z.