mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-26 18:02:17 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@260269 c90b9560-bf6c-de11-be94-00142212c4b1
235 lines
7.0 KiB
XML
235 lines
7.0 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.26 $ -->
|
|
<!-- EN-Revision: 1.15 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.crypt">
|
|
<refnamediv>
|
|
<refname>crypt</refname>
|
|
<refpurpose>Chiffrage indéchiffrable (hashing)</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>string</type><methodname>crypt</methodname>
|
|
<methodparam><type>string</type><parameter>str</parameter></methodparam>
|
|
<methodparam choice="opt"><type>string</type><parameter>salt</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
<function>crypt</function> retourne la chaîne <parameter>str</parameter>
|
|
chiffrée avec l'algorithme standard Unix <abbrev>DES</abbrev>, ou bien
|
|
un des algorithmes disponibles sur la machine.
|
|
</para>
|
|
<para>
|
|
Certains systèmes supportent plus d'un type de chiffrement. En fait,
|
|
il arrive que le chiffrement DES standard soit remplacé par un
|
|
algorithme de chiffrement MD5. Le choix du type de chiffrement est
|
|
effectué en se basant sur la valeur du <parameter>salt</parameter>.
|
|
À l'installation, PHP détermine les possibilités de
|
|
la fonction <function>crypt</function>, et acceptera des <parameter>salt</parameter>
|
|
pour d'autres types de chiffrements. Si aucun <parameter>salt</parameter>
|
|
n'est fourni, PHP va en générer un de deux caractères, à moins que le
|
|
système par défaut soit MD5, auquel cas un <parameter>salt</parameter>
|
|
compatible MD5 sera généré. PHP définit une constante appelée
|
|
<constant>CRYPT_SALT_LENGTH</constant> qui vous dira si un <parameter>salt</parameter>
|
|
de deux caractères s'applique à votre système, ou bien si c'est
|
|
un <parameter>salt</parameter> de 12 caractères.
|
|
</para>
|
|
<para>
|
|
<function>crypt</function>, lorsqu'elle est utilisée avec
|
|
le chiffrement standard DES, retourne le <parameter>salt</parameter>
|
|
dans les deux premiers caractères de la chaîne retournée. Elle
|
|
n'utilise que les 8 premiers caractères de <parameter>str</parameter>,
|
|
ce qui fait que toutes les chaînes plus longues, qui ont les mêmes
|
|
premiers 8 octets retourneront le même résultat (tant que le
|
|
<parameter>salt</parameter> est toujours le même).
|
|
</para>
|
|
<simpara>
|
|
Sur les systèmes où <function>crypt</function> supporte plusieurs types de
|
|
chiffrements, les constantes suivantes sont mises à 0 ou 1,
|
|
suivant que le type correspondant est disponible :
|
|
</simpara>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
<constant>CRYPT_STD_DES</constant> : chiffrement DES standard à 2 caractères
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
<constant>CRYPT_EXT_DES</constant> : chiffrement DES étendu à 9 caractères
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
<constant>CRYPT_MD5</constant> : chiffrement MD5 à 12 caractères
|
|
commençant par <literal>$1$</literal>
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
<constant>CRYPT_BLOWFISH</constant> : chiffrement Blowfish à 16 caractères
|
|
commençant par <literal>$2$</literal> ou <literal>$2a$</literal>.
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>str</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
La chaîne à chiffrer.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>salt</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Si l'argument <parameter>salt</parameter> n'est pas fourni, PHP
|
|
en générera un lui-même, à chaque appel à cette fonction.
|
|
</para>
|
|
<para>
|
|
Si vous utilisez le <parameter>salt</parameter> généré, pensez bien que
|
|
le <parameter>salt</parameter> est généré une seule fois. Si vous appelez
|
|
cette fonction plusieurs fois, cela peut avoir des impacts sur la sécurité
|
|
et l'apparence du résultat.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Retourne la chaîne chiffrée.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>Exemple avec <function>crypt</function></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// laissons le salt initialisé par PHP
|
|
$password = crypt('mypassword');
|
|
|
|
/*
|
|
Il vaut mieux passer le résultat complet de crypt() comme salt nécessaire
|
|
pour le chiffrement du mot de passe, pour éviter les problèmes entre les
|
|
algorithmes utilisés (comme nous le disons ci-dessus, le chiffrement
|
|
standard DES utilise un salt de 2 caractères, mais un chiffrement
|
|
MD5 utilise un salt de 12).
|
|
*/
|
|
if (crypt($user_input, $password) == $password) {
|
|
echo "Mot de passe correct !";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Utilisation de <function>crypt</function> avec htpasswd</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Définition du mot de passe
|
|
$password = 'mypassword';
|
|
|
|
// Récupération du hash, on laisse le salt se générer automatiquement
|
|
$hash = crypt($password);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Utilisation de <function>crypt</function> avec différents types de chiffrement</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (CRYPT_STD_DES == 1) {
|
|
echo 'DES standard : ' . crypt('rasmuslerdorf', 'rl') . "\n";
|
|
}
|
|
|
|
if (CRYPT_EXT_DES == 1) {
|
|
echo 'DES étendu : ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
|
|
}
|
|
|
|
if (CRYPT_MD5 == 1) {
|
|
echo 'MD5 : ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
|
|
}
|
|
|
|
if (CRYPT_BLOWFISH == 1) {
|
|
echo 'Blowfish : ' . crypt('rasmuslerdorf', '$2a$07$rasmuslerd...........$') . "\n";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<screen>
|
|
<![CDATA[
|
|
DES standard : rl.3StKT.4T8M
|
|
DES étendu : _J9..rasmBYk8r9AiWNc
|
|
MD5 : $1$rasmusle$rISCgZzpwk3UhDidwXvin0
|
|
Blowfish : $2a$07$rasmuslerd............nIdrcHdxcUxWomQX9j6kvERCFjTg7Ra
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="notes">
|
|
&reftitle.notes;
|
|
<note>
|
|
<simpara>
|
|
Il n'existe pas de fonction de déchiffrement, car la fonction <function>crypt</function>
|
|
utilise un algorithme à un seul sens (injection).
|
|
</simpara>
|
|
</note>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>md5</function></member>
|
|
<member>L'extension <link linkend="ref.mcrypt">Mcrypt</link></member>
|
|
<member>La page de manuel Unix de la fonction crypt pour plus d'informations</member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|