Exemplo n.º 1
0
Arquivo: md5.c Projeto: rannger/Matrix
void MD5_finish(md5_t *c, void *md)
{
    unsigned char *p = (unsigned char *) c->data;
    size_t n = c->num;
    char* _md = (char*)md;

    p[n] = 0x80; /* there is always room for one */
    n++;

    if (n > (MD5_CBLOCK - 8))
    {
        memset(p + n, 0, MD5_CBLOCK - n);
        n = 0;
        md5_block_data_order(c, p, 1);
    }
    memset(p + n, 0, MD5_CBLOCK - 8 - n);

    p += MD5_CBLOCK - 8;
    (void) HOST_l2c(c->Nl,p);
    (void) HOST_l2c(c->Nh,p);
    p -= MD5_CBLOCK;
    md5_block_data_order(c, p, 1);
    c->num = 0;
    memset(p, 0, MD5_CBLOCK);

    HASH_MAKE_STRING(c, _md);

}
Exemplo n.º 2
0
int SHA1_Final (unsigned char *md, SHA_CTX *c)
{
	unsigned char *p = (unsigned char *)c->data;
	size_t n = c->num;

	p[n] = 0x80; /* there is always room for one */
	n++;

	if (n > (SHA_CBLOCK-8))
		{
		memset (p+n,0,SHA_CBLOCK-n);
		n=0;
		sha1_block_data_order (c,p,1);
		}
	memset (p+n,0,SHA_CBLOCK-8-n);

	p += SHA_CBLOCK-8;
	(void)HOST_l2c(c->Nh,p);
	(void)HOST_l2c(c->Nl,p);
	p -= SHA_CBLOCK;
	sha1_block_data_order (c,p,1);
	c->num=0;
	memset (p,0,SHA_CBLOCK);

	HASH_MAKE_STRING(c,md);

	return 1;
}
Exemplo n.º 3
0
//Finish MD4 process
void __fastcall MD4_Final(
	uint8_t *md, 
	MD4_CTX *c)
{
	unsigned char *p = (unsigned char *)c->Data;
	size_t n = c->Num;

	p[n] = 0x80; //There is always room for one.
	n++;
	if (n > (MD4_SIZE_BLOCK - 8U))
	{
		memset(p + n, 0, MD4_SIZE_BLOCK - n);
		n = 0;
		MD4_BlockDataOrder(c, p, 1);
	}
	memset(p + n, 0, MD4_SIZE_BLOCK - 8U - n);
	p += MD4_SIZE_BLOCK - 8U;
#if BYTE_ORDER == LITTLE_ENDIAN
	(void)HOST_l2c(c->Nl, p);
	(void)HOST_l2c(c->Nh, p);
#else
	(void)HOST_l2c(c->Nh, p);
	(void)HOST_l2c(c->Nl, p);
#endif
	p -= MD4_SIZE_BLOCK;
	MD4_BlockDataOrder(c, p, 1U);
	c->Num = 0;
	memset(p, 0, MD4_SIZE_BLOCK);
	HASH_MAKE_STRING(c, md);

	return;
}