Re: How are md5.h: pg_md5_hash() function and below functions working? - Mailing list pgsql-general

From Michael Paquier
Subject Re: How are md5.h: pg_md5_hash() function and below functions working?
Date
Msg-id YeugFrvGEIxaRj6G@paquier.xyz
Whole thread Raw
In response to Re: How are md5.h: pg_md5_hash() function and below functions working?  (Adrian Klaver <adrian.klaver@aklaver.com>)
List 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

Attachment

pgsql-general by date:

Previous
From: Michael Paquier
Date:
Subject: Re: recording of INDEX creation in tables
Next
From: "David G. Johnston"
Date:
Subject: Re: recording of INDEX creation in tables