From e56ed2ffea0245eee3c08edd97d5e560a964c78d Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Apr 2013 08:38:51 +0200 Subject: initial commit --- nthash.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 nthash.c (limited to 'nthash.c') diff --git a/nthash.c b/nthash.c new file mode 100644 index 0000000..16afe60 --- /dev/null +++ b/nthash.c @@ -0,0 +1,42 @@ +/* (c) 2012-2013 Christian Hesse + * Base on an example from: + * http://www.lysator.liu.se/~nisse/nettle/nettle.html#Example */ + +#include +#include + +#include + +#define BUF_SIZE 1024 + +int main(int argc, char **argv) { + struct md4_ctx ctx; + uint8_t buffer[BUF_SIZE], buffernull[2*BUF_SIZE]; + uint8_t digest[MD4_DIGEST_SIZE]; + int i, done; + + md4_init(&ctx); + for (;;) { + done = fread(buffer, 1, sizeof(buffer), stdin); + // add null bytes to string + for (i = 0; i < done; i++) { + if (buffer[i] == 0xa) + fprintf(stderr, "Warning: Password contains line break!\n"); + buffernull[i*2] = buffer[i]; + buffernull[i*2+1] = 0; + } + md4_update(&ctx, done*2, buffernull); + if (done < sizeof(buffer)) + break; + } + if (ferror(stdin)) + return EXIT_FAILURE; + + md4_digest(&ctx, MD4_DIGEST_SIZE, digest); + + for (i = 0; i < MD4_DIGEST_SIZE; i++) + printf("%02x ", digest[i]); + printf("\n"); + + return EXIT_SUCCESS; +} -- cgit v1.2.3-54-g00ecf