Компьютеры
Материал из VirtualIreland.ru.
Содержание |
Как и положено, начнем с приветствия
(взято от сюда)
/* * Print's "Hello world\n" to stdout. * * How it works: it generates strings of randomly selected letters, * spaces and newline characters and computes the MD5 checksum of * each string. Once it get's a string whose MD5 checksum matches * the MD5 checksum of "Hello world\n", it prints the string and * terminates. * * N.B. This program uses the standard srandom and random functions to * generate the random strings. Make sure that your implementation of * these functions has sufficient entropy to give you a decent chance * of generating the "Hello world\n" string! */ /* * md5data is a routine which computes the MD5 checksum of * the specified data bytes and returns the 16-byte checksum * into the 4 element array csum. * Many MD5 implementations are available on the 'net. Pick your * favourite one (or use the one in the md5 hash function node) and * write an interface routine for it called md5data which takes * the parameters described below. */ extern void md5data( void *data, int length, int csum[] ); /* * pre-computed MD5 checksum of "Hello world\n" */ int md5[4] = { 0xf0ef7081, 0xe1539ac0, 0x0ef5b761, 0xb4fb01b3 }; main() { srandom(0); while (1) { char msg[13]; int tmp[4]; int i; for ( i = 0; i < 12; i += 1 ) { msg[i] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \n"[ random() % (2 * 26 + 2) ]; } msg[12] = '\0'; md5data(msg,strlen(msg),tmp); if ( md5[0] == tmp[0] && md5[1] == tmp[1] && md5[2] == tmp[2] && md5[3] == tmp[3] ) { write(1,msg,strlen(msg)); exit(0); } } }
или смотрим здесь полный список как это сказать (: