#include <openssl/md5.h> // gcc ... -lcrypto
#include <stdio.h>
#include <string.h>
int main(void) {
char password[99];
printf("Enter password: ");
fflush(stdout);
fgets(password, 99, stdin);
password[strcspn(password, "\n")] = 0;
unsigned char hash[MD5_DIGEST_LENGTH];
union { unsigned char u[120]; char s[120]; } key;
int n = 1;
for (;;) {
size_t len = sprintf(key.s, "%s%d", password, n);
MD5(key.u, len, hash);
if ((hash[0] == 0) && (hash[1] == 0) && (hash[2] < 16)) break;
n++;
}
printf("DAY04-PART1: %d\n", n);
for (;;) {
size_t len = sprintf(key.s, "%s%d", password, n);
MD5(key.u, len, hash);
if ((hash[0] == 0) && (hash[1] == 0) && (hash[2] == 0)) break;
n++;
}
printf("DAY04-PART2: %d\n", n);
return 0;
}