jimw            Sun Dec 16 15:38:10 2001 EDT

  Modified files:              
    /phpdoc/en/functions        strings.xml 
  Log:
  crypt: clarify a bit, add examples, resist urge to replace all uses of 'encryption' 
with 'hashing'
  
Index: phpdoc/en/functions/strings.xml
diff -u phpdoc/en/functions/strings.xml:1.140 phpdoc/en/functions/strings.xml:1.141
--- phpdoc/en/functions/strings.xml:1.140       Sun Dec 16 05:34:01 2001
+++ phpdoc/en/functions/strings.xml     Sun Dec 16 15:38:08 2001
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.140 $ -->
+<!-- $Revision: 1.141 $ -->
  <reference id="ref.strings">
   <title>String functions</title>
   <titleabbrev>Strings</titleabbrev>
@@ -419,7 +419,7 @@
   <refentry id="function.crypt">
    <refnamediv>
     <refname>crypt</refname>
-    <refpurpose>DES-encrypt a string</refpurpose>
+    <refpurpose>One-way string encryption (hashing)</refpurpose>
    </refnamediv>
    <refsect1>
     <title>Description</title>
@@ -434,38 +434,40 @@
     </funcsynopsis>
     <para>
      <function>crypt</function> will return an encrypted string using the
-     standard Unix <abbrev>DES</abbrev> encryption method.  Arguments
-     are a string to be encrypted and an optional two-character salt
-     string to base the encryption on.  See the Unix man page for your
-     crypt function for more information.
+     standard Unix <abbrev>DES</abbrev>-based encryption algorithm or
+     alternative algorithms that may be available on the system.  Arguments
+     are a string to be encrypted and an optional salt string to base the
+     encryption on.  See the Unix man page for your crypt function for more
+     information.
     </para>
     <simpara>
      If the salt argument is not provided, one will be randomly
      generated by PHP.
     </simpara>
     <simpara>
-     Some operating systems support more than one type of encryption.
-     In fact, sometimes the standard DES encryption is replaced by an
-     MD5 based encryption algorithm.  The encryption type is triggered
-     by the salt argument.  At install time, PHP determines the
-     capabilities of the crypt function and will accept salts for
-     other encryption types.  If no salt is provided, PHP will
-     auto-generate a standard 2-character DES salt by default, unless
-     the default encryption type on the system is MD5, in which case a
-     random MD5-compatible salt is generated.  PHP sets a constant
-     named CRYPT_SALT_LENGTH which tells you whether a regular
-     2-character salt applies to your system or the longer 12-char MD5
-     salt is applicable.
+     Some operating systems support more than one type of encryption.  In
+     fact, sometimes the standard DES-based encryption is replaced by an
+     MD5-based encryption algorithm.  The encryption type is triggered by the
+     salt argument.  At install time, PHP determines the capabilities of the
+     crypt function and will accept salts for other encryption types.  If no
+     salt is provided, PHP will auto-generate a standard two character salt by
+     default, unless the default encryption type on the system is MD5, in
+     which case a random MD5-compatible salt is generated.  PHP sets a
+     constant named CRYPT_SALT_LENGTH which tells you whether a regular two
+     character salt applies to your system or the longer twelve character salt
+     is applicable.
     </simpara>
     <simpara>
-     If you are using the supplied salt, you should be aware that the
-     salt is generated once. If you are calling this function
-     recursively, this may impact both appearance and, to a certain
-     extent, security.
+     If you are using the supplied salt, you should be aware that the salt is
+     generated once. If you are calling this function recursively, this may
+     impact both appearance and security.
     </simpara>
     <simpara>
-     The standard DES encryption <function>crypt</function> contains
-     the salt as the first two characters of the output.
+     The standard DES-based encryption <function>crypt</function> returns the
+     salt as the first two characters of the output. It also only uses the
+     first eight characters of <parameter>str</parameter>, so longer strings
+     that start with the same eight characters will generate the same result
+     (when the same salt is used).
     </simpara>
     <simpara>
      On systems where the crypt() function supports multiple
@@ -475,33 +477,54 @@
     <itemizedlist>
      <listitem>
       <simpara>
-       CRYPT_STD_DES - Standard DES encryption with a 2-char SALT
+       CRYPT_STD_DES - Standard DES-based encryption with a two character salt
       </simpara>
      </listitem>
      <listitem>
       <simpara>
-       CRYPT_EXT_DES - Extended DES encryption with a 9-char SALT
+       CRYPT_EXT_DES - Extended DES-based encryption with a nine character salt
       </simpara>
      </listitem>
      <listitem>
       <simpara>
-       CRYPT_MD5 - MD5 encryption with a 12-char SALT starting with
+       CRYPT_MD5 - MD5 encryption with a twelve character salt starting with
        $1$
       </simpara>
      </listitem>
      <listitem>
       <simpara>
-       CRYPT_BLOWFISH - Extended DES encryption with a 16-char SALT
+       CRYPT_BLOWFISH - Blowfish encryption with a sixteen character salt
        starting with $2$
       </simpara>
      </listitem>
     </itemizedlist>
+    <note>
+     <simpara>
+      There is no decrypt function, since <function>crypt</function>
+      uses a one-way algorithm.
+     </simpara>
+     </note>
+    <example>
+     <title><function>crypt</function> examples</title>
+     <programlisting role="php">
+<![CDATA[
+<?php
+$password = crypt("My1sTpassword"); # let salt be generated
+
+# You should pass the entire results of crypt() as the salt for comparing a
+# password, to avoid problems when different hashing algorithms are used. (As
+# it says above, standard DES-based password hashing uses a 2-character salt,
+# but MD5-based hashing uses 12.)
+if (crypt($user_input,$password) == $password) {
+   echo "Password verified!";
+}
+?>
+]]>
+     </programlisting>
+    </example>
     <simpara>
-     There is no decrypt function, since <function>crypt</function>
-     uses a one-way algorithm.
-    </simpara>
-    <simpara>
-     See also: <function>md5</function>.
+     See also <function>md5</function> and <link linkend="ref.mcrypt">the
+     Mcrypt extension</link>.
     </simpara>
    </refsect1>
   </refentry>


Reply via email to