Kicking it Olde Sküül! Burgerlib on Github Follow Olde Sküül on Twitter Burgerbecky on LinkedIn Burgerbecky on LinkedIn
Loading...
Searching...
No Matches
Burger::MD5Hasher_t Struct Reference

Multi-pass MD5 hash generator. More...

Collaboration diagram for Burger::MD5Hasher_t:

Public Member Functions

void init (void) noexcept
 Initialize the MD5 hasher.
 
void process (const uint8_t pBlock[64]) noexcept
 Process a single 64 byte block of data.
 
void process (const void *pInput, uintptr_t uLength) noexcept
 Process an arbitrary number of input bytes.
 
void finalize (void) noexcept
 Finalize the hashing.
 

Public Attributes

MD5_t m_Hash
 Current 128 bit value.
 
uint64_t m_uByteCount
 Number of bytes processed (64 bit value)
 
uint8_t m_CacheBuffer [64]
 Input buffer for processing.
 

Detailed Description

Multi-pass MD5 hash generator.


This structure is needed to perform a multi-pass MD5 hash and contains cached data and a running checksum.

// Initialize
Context.init();
// Process data in passes
Context.process(Buffer1,sizeof(Buffer1));
Context.process(Buffer2,sizeof(Buffer2));
Context.process(Buffer3,sizeof(Buffer3));
// Wrap up the processing
Context.finalize();
// Return the resulting hash
MemoryCopy(pOutput,&Context.m_Hash,16);
void MemoryCopy(void *pOutput, const void *pInput, uintptr_t uCount) noexcept
Copy raw memory from one buffer to another.
Definition brmemoryfunctions.cpp:186
Multi-pass MD5 hash generator.
Definition burger.h:7263
void process(const uint8_t pBlock[64]) noexcept
Process a single 64 byte block of data.
Definition brmd5.cpp:137
void init(void) noexcept
Initialize the MD5 hasher.
Definition brmd5.cpp:71
void finalize(void) noexcept
Finalize the hashing.
Definition brmd5.cpp:316
MD5_t m_Hash
Current 128 bit value.
Definition burger.h:7266
See also
MD5_t or hash(MD5_t *,const void *,uintptr_t)

Member Function Documentation

◆ finalize()

void BURGER_API Burger::MD5Hasher_t::finalize ( void )
noexcept

Finalize the hashing.


When multi-pass hashing is performed, this call is necessary to finalize the hash so that the generated checksum can be applied into the hash

See also
init(void), process(const void *,uintptr_t)

◆ init()

void BURGER_API Burger::MD5Hasher_t::init ( void )
noexcept

Initialize the MD5 hasher.


Call this function before any hashing is performed

See also
process(const void *,uintptr_t) or finalize(void)

◆ process() [1/2]

void BURGER_API Burger::MD5Hasher_t::process ( const uint8_t pBlock[64])
noexcept

Process a single 64 byte block of data.


MD5 data is processed in 64 byte chunks. This function will process 64 bytes on input and update the hash and checksum

Parameters
pBlockPointer to a buffer of 64 bytes of data to hash
See also
process(const void *,uintptr_t), finalize(void) or init(void)

◆ process() [2/2]

void BURGER_API Burger::MD5Hasher_t::process ( const void * pInput,
uintptr_t uLength )
noexcept

Process an arbitrary number of input bytes.


Process input data into the hash. If data chunks are not a multiple of 64 bytes, the excess will be cached and a future call will continue the hashing where it left off.

Parameters
pInputPointer to a buffer of data to hash
uLengthNumber of bytes to hash
See also
process(const uint8_t[64]), finalize(void)

Member Data Documentation

◆ m_CacheBuffer

uint8_t Burger::MD5Hasher_t::m_CacheBuffer[64]

Input buffer for processing.

◆ m_Hash

MD5_t Burger::MD5Hasher_t::m_Hash

Current 128 bit value.

◆ m_uByteCount

uint64_t Burger::MD5Hasher_t::m_uByteCount

Number of bytes processed (64 bit value)