Mailing List Archive

Cannot understand output of libgcrypt's hashing functions
Hello,

I'm trying to use libgcrypt to generate a hash. I'm pretty new to
programming so I'm just testing out the library.

This is the code I've written:

#include <stdio.h>
#include <stdlib.h>
#include <gcrypt.h>
#include <stdbool.h>

int main(void)
{
const char* gcrypt_version = gcry_check_version(NULL);
if (!gcrypt_version)
{
fprintf(stderr, "ERROR: libgcrypt was unable to initialize\n");
exit(2);
}
printf("Gcrypt Version: %s\n", gcrypt_version);

gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);

if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))
{
fprintf(stderr, "ERROR: libgcrypt has not been initialized\n");
abort();
}


char* text = "hello\n";
char hash_storage[200] = {0};
gcry_md_hash_buffer(GCRY_MD_MD5, hash_storage, text, strlen(text));
printf("%s\n", hash_storage);

return 0;

}

As you can see I'm just trying to test out this function. Everything
runs but at the end the printf prints out jibberish which I'm unable to
interpret. How is the hash digest encoded?

Yours faithfully,
megamind6155.
Re: Cannot understand output of libgcrypt's hashing functions [ In reply to ]
megamind6155 via Gnupg-devel wrote:
> Hello,
>
> I'm trying to use libgcrypt to generate a hash. I'm pretty new to
> programming so I'm just testing out the library.
>
> This is the code I've written:
>
> [...]
>
> As you can see I'm just trying to test out this function. Everything
> runs but at the end the printf prints out jibberish which I'm unable
> to interpret. How is the hash digest encoded?
That jibberish is almost certainly a binary MD5 digest of "hello\n".
Try piping the output of your program through "hexdump -C" and compare
the last bytes to the output of "echo hello | md5sum" at a shell prompt.

As for how to use this, try writing a simple routine to dump the hash
value as hexadecimal instead of trying to print it as a string.


-- Jacob

_______________________________________________
Gnupg-devel mailing list
Gnupg-devel@gnupg.org
https://lists.gnupg.org/mailman/listinfo/gnupg-devel
Re: Cannot understand output of libgcrypt's hashing functions [ In reply to ]
I read out each element in the array as a hexadecimal and the output was
matching. Thank you for your help.

Yours faithfully,
megamind6155.

On 25/03/24 06:09, Jacob Bachmeyer wrote:
> megamind6155 via Gnupg-devel wrote:
>> Hello,
>>
>> I'm trying to use libgcrypt to generate a hash. I'm pretty new to
>> programming so I'm just testing out the library.
>>
>> This is the code I've written:
>>
>> [...]
>>
>> As you can see I'm just trying to test out this function. Everything
>> runs but at the end the printf prints out jibberish which I'm unable
>> to interpret. How is the hash digest encoded?
> That jibberish is almost certainly a binary MD5 digest of "hello\n". Try
> piping the output of your program through "hexdump -C" and compare the
> last bytes to the output of "echo hello | md5sum" at a shell prompt.
>
> As for how to use this, try writing a simple routine to dump the hash
> value as hexadecimal instead of trying to print it as a string.
>
>
> -- Jacob