Beispiel #1
0
int main(int argc, char *argv[])
{
	uint8_t result[16];
	uint8_t* msg;

	if (argc < 2) {
		fprintf(stderr, "Target required\n");
		return 1;
	}

	size_t len = strlen(argv[1]);
	msg = malloc((int)len * sizeof(uint8_t));
	for(size_t i = 0;i < len;i++) {
		msg[i] = argv[1][i];
	}


	size_t new_len = len;
	size_t input_len = len;
	
	for (new_len = input_len + 1; new_len % (512 / 8) != 448 / 8;
			new_len++);

	//printf(" new_len = %d\n", new_len);
	uint8_t *msg2 = (uint8_t*) malloc(new_len + 8);
	for(size_t i = 0;i < (new_len + 8);i++)
	{
		msg2[i] = 0;
	}
	memcpy(msg2, msg, len);

	msg2[len] = 0x80;

	if(len < 56) {
		msg2[input_len] = 0x80;
		size_t new_len = 56;
		word_to_byte(input_len * 8, msg2 + new_len);

		md5_located_55( msg2, result);
	} else {
		md5_located( msg2, len, new_len, result);
	}
	for (int i = 0; i < 16; i++)
		printf("%2.2x", result[i]);
	puts("");

	free(msg);
	return EXIT_SUCCESS;
}
void Eight_Bit_LE_Pair::Write(word& data)
{
	auto bytes = word_to_byte(data);
	m_regs.first->Write(bytes.first);
	m_regs.second->Write(bytes.second);
}