diff options
Diffstat (limited to 'nthash.c')
-rw-r--r-- | nthash.c | 42 |
1 files changed, 42 insertions, 0 deletions
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 <mail@eworm.de> + * Base on an example from: + * http://www.lysator.liu.se/~nisse/nettle/nettle.html#Example */ + +#include <stdio.h> +#include <stdlib.h> + +#include <nettle/md4.h> + +#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; +} |