On Tue, Sep 24, 2013 at 11:20:55PM +0100, Richard Neill wrote:
> I'm sorry about that: I think I need to correct my proposed
> correction! I think I've been writing too much C recently, and so I
> foolishly mis-read that as returning pswhash, rather than returning
> the truth of the comparison.
>
> What I meant to write, for clarity, was:
>
> SELECT (pswhash = crypt('entered password', pswhash)) AS pswmatch FROM ... ;
>
> which would make it obvious that we're returning the boolean named pswmatch.
>
> >
> >>[Also, should the default example perhaps use gen_salt('bf'), as opposed to
> >>gen_salt('md5') ?]
> >
> >This, however, might be a good idea. People should of course always
> >read the documentation, but having the examples including the "best
> >practice" would probably be a good idea.
>
> Incidentally, there are 2 other things that confused me in this section.
>
> 1. Table F-18. Supported algorithms for crypt() has a column
> labelled "max password length". It would perhaps also be useful to
> know the size of column needed to store the crypted password (my
> original crypt using md5 easily fits in a varchar(70), whereas using
> bf needs the column to be varchar(100).)
>
>
> 2. Table F-20. Hash algorithm speeds
>
> What's the difference here between "crypt-md5" and "md5" ?
>
> If I've rightly read this, the algorithm named "md5" in the crypt()
> documentation is named "crypt-md5" here, whereas Table F20's "md5"
> algorithm seems to refer to something else - probably the "normal"
> version of md5.
>
> If so, it would be clearer to write that the last 2 lines ("md5" and
> "sha1") are for comparison only, and refer to the speed of doing an
> ordinary md5/sha1 sum, rather than the md5-variant of crypt().
>
>
> Anyway, thanks again for your help - Postgres is a wonderful system,
> which I've found to be repeatedly useful.
Based on your report, I have developed the attached doc patch which
clarifies when MD5 hash is being referenced, and when MD5 crypt is. I
have also added your other suggestions.
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
diff --git a/doc/src/sgml/pgcrypto.sgml b/doc/src/sgml/pgcrypto.sgml
new file mode 100644
index a0eead7..976c7db
*** a/doc/src/sgml/pgcrypto.sgml
--- b/doc/src/sgml/pgcrypto.sgml
*************** hmac(data bytea, key text, type text) re
*** 95,102 ****
</para>
<para>
! The algorithms in <function>crypt()</> differ from usual hashing algorithms
! like MD5 or SHA1 in the following respects:
</para>
<orderedlist>
--- 95,102 ----
</para>
<para>
! The algorithms in <function>crypt()</> differ from the usual
! MD5 or SHA1 hashing algorithms in the following respects:
</para>
<orderedlist>
*************** hmac(data bytea, key text, type text) re
*** 142,147 ****
--- 142,148 ----
<entry>Max Password Length</entry>
<entry>Adaptive?</entry>
<entry>Salt Bits</entry>
+ <entry>Output length</entry>
<entry>Description</entry>
</row>
</thead>
*************** hmac(data bytea, key text, type text) re
*** 151,156 ****
--- 152,158 ----
<entry>72</entry>
<entry>yes</entry>
<entry>128</entry>
+ <entry>60</entry>
<entry>Blowfish-based, variant 2a</entry>
</row>
<row>
*************** hmac(data bytea, key text, type text) re
*** 158,163 ****
--- 160,166 ----
<entry>unlimited</entry>
<entry>no</entry>
<entry>48</entry>
+ <entry>34</entry>
<entry>MD5-based crypt</entry>
</row>
<row>
*************** hmac(data bytea, key text, type text) re
*** 165,170 ****
--- 168,174 ----
<entry>8</entry>
<entry>yes</entry>
<entry>24</entry>
+ <entry>20</entry>
<entry>Extended DES</entry>
</row>
<row>
*************** hmac(data bytea, key text, type text) re
*** 172,177 ****
--- 176,182 ----
<entry>8</entry>
<entry>no</entry>
<entry>12</entry>
+ <entry>13</entry>
<entry>Original UNIX crypt</entry>
</row>
</tbody>
*************** UPDATE ... SET pswhash = crypt('new pass
*** 205,211 ****
<para>
Example of authentication:
<programlisting>
! SELECT pswhash = crypt('entered password', pswhash) FROM ... ;
</programlisting>
This returns <literal>true</> if the entered password is correct.
</para>
--- 210,216 ----
<para>
Example of authentication:
<programlisting>
! SELECT (pswhash = crypt('entered password', pswhash)) AS pswmatch FROM ... ;
</programlisting>
This returns <literal>true</> if the entered password is correct.
</para>
*************** gen_salt(type text [, iter_count integer
*** 353,359 ****
<entry>12 years</entry>
</row>
<row>
! <entry><literal>md5</></entry>
<entry>2345086</entry>
<entry>1 day</entry>
<entry>3 years</entry>
--- 358,364 ----
<entry>12 years</entry>
</row>
<row>
! <entry><literal>md5 hash</></entry>
<entry>2345086</entry>
<entry>1 day</entry>
<entry>3 years</entry>
*************** gen_salt(type text [, iter_count integer
*** 380,386 ****
</listitem>
<listitem>
<para>
! <literal>md5</> numbers are from mdcrack 1.2.
</para>
</listitem>
<listitem>
--- 385,391 ----
</listitem>
<listitem>
<para>
! <literal>md5 hash</> numbers are from mdcrack 1.2.
</para>
</listitem>
<listitem>
*************** gen_random_bytes(count integer) returns
*** 1343,1349 ****
<entry>OpenBSD sys/crypto</entry>
</row>
<row>
! <entry>MD5 and SHA1</entry>
<entry>WIDE Project</entry>
<entry>KAME kame/sys/crypto</entry>
</row>
--- 1348,1354 ----
<entry>OpenBSD sys/crypto</entry>
</row>
<row>
! <entry>MD5 hash and SHA1</entry>
<entry>WIDE Project</entry>
<entry>KAME kame/sys/crypto</entry>
</row>
--
Sent via pgsql-bugs mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs