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
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 |