Реферат: Цифровая подпись

Если n > 32, то результат равен нулю.

Функции

void MD5Init ( MD5_CTX *mdContext)

Функция MD5Init(MD5_CTX *mdContext) выполняет инициализацию некоторых полей структуры Message Digest MD5_CTX В качестве параметра функция получает указатель на структуру MD5_CTX.

{

/* Обнуление полей, которые будут содержать длину сообщения */

mdContext->i[0] = mdContext->i[1] = (UINT4)0;

/* Загрузка магических констант инициализации. */

mdContext->buf[0] = (UINT4)0x67452301L;

mdContext->buf[1] = (UINT4)0xefcdab89L;

mdContext->buf[2] = (UINT4)0x98badcfeL;

mdContext->buf[3] = (UINT4)0x10325476L;

}

void MD5Update (register MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen)

Данная функция обрабатывает содержимое структуры MD5_CTX.

В качестве параметров функция получает:

Указатель mdContext на структуру MD5_CTX;

Cимвольный буфер inBuf[], который содержит символы исходного сообщения, чей Message Digest мы подсчитываем; Длину inLen передаваемого буфера.

Вначале подсчитывается целочисленная величина mdi:

mdi = (int)((mdContext->i[0] >> 3) & 0x3F);

Эта величина равна длине сообщения в байтах по модулю 64. Длина сообщения в битах хранится в структуре MD5_CTX в буфере i[0. . 1].

Длина сообщения в битах заносится в буфер i[0. . 1] следующим образом:

mdContext->i[0] += ((UINT4)inLen << 3);

mdContext->i[1] += ((UINT4)inLen >> 29);

Следующий участок кода выполняет следующие действия:

while (inLen--)

{

/* добавляем новый символ в буфер, инкрементируя mdi */

mdContext->in[mdi++] = *inBuf++;

К-во Просмотров: 486
Бесплатно скачать Реферат: Цифровая подпись