Re: How are md5.h: pg_md5_hash() function and below functions working?

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
Cc: Ali Koca <kinetixcicocuk(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: How are md5.h: pg_md5_hash() function and below functions working?
Date: 2022-01-22 06:11:34
Message-ID: YeugFrvGEIxaRj6G@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sat, Jan 08, 2022 at 08:12:50AM -0800, Adrian Klaver wrote:
> On 1/8/22 05:21, Ali Koca wrote:
>> I can't understand functions in md5.h, these are seemingly little bit
>> weird. Such as:
>>     /* Utilities common to all the MD5 implementations,
>>     as of md5_common.c */
>>     extern bool pg_md5_hash(const void *buff, size_t len, char *hexsum);
>>     extern bool pg_md5_binary(const void *buff, size_t len, void *outbuf);
>>     extern bool pg_md5_encrypt(const char *passwd, const char *salt,
>>                            size_t salt_len, char *buf);
>
> What they do is explained in md5_common.c.

pg_md5_hash() and pg_md5_binary() do the same thing, by computing a
MD5. pg_md5_hash() computes it as a string in hex format, meaning
that it is 33-character long with the final trailing '\0'.
pg_md5_binary() computes 16 raw bytes.

pg_md5_encrypt() is a utility wrapper that does the operation of
pg_md5_hash() based on a password and a salt, used at authentication
time for MD5. Its result is a 36-byte long string, prefixed with
"md5" and a 33-byte long hex string. Those routine names are
historic.
--
Michael

In response to

Browse pgsql-general by date

  From Date Subject
Next Message David G. Johnston 2022-01-22 06:38:44 Re: recording of INDEX creation in tables
Previous Message Michael Paquier 2022-01-22 05:58:45 Re: recording of INDEX creation in tables