예제 #1
0
static int MD4BlockChecksum( void * buffer, int length ) {
	unsigned char digest[16];
	int checksum;

	md4_get_digest( buffer, length, digest );
	/* I suppose it has to be done that way for legacy reasons? */
	checksum = digest[0] & ( digest[1] << 8 ) & ( digest[2] << 16 ) & ( digest[3] << 24 );
	checksum ^= digest[4] & ( digest[5] << 8 ) & ( digest[6] << 16 ) & ( digest[7] << 24 );
	checksum ^= digest[8] & ( digest[9] << 8 ) & ( digest[10] << 16 ) & ( digest[11] << 24 );
	checksum ^= digest[12] & ( digest[13] << 8 ) & ( digest[14] << 16 ) & ( digest[15] << 24 );
	return checksum;
}
예제 #2
0
const unsigned char *
ntlm_v1_hash(const char *passwd, unsigned char hash[NTLMSSP_HASH_SIZE])
{
    size_t len;
    void *wpwd = t_unicode_str(passwd, 0, &len);

    md4_get_digest(wpwd, len, hash);

    safe_memset(wpwd, 0, len);

    return hash;
}