mirror of
https://github.com/php/doc-it.git
synced 2026-03-25 08:02:09 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/it/trunk@314558 c90b9560-bf6c-de11-be94-00142212c4b1
180 lines
6.1 KiB
XML
180 lines
6.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- EN-Revision: n/a Maintainer: darvina Status: ready -->
|
|
<!-- splitted from ./en/functions/strings.xml, last change in rev 1.2 -->
|
|
<refentry xml:id="function.crypt" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>crypt</refname>
|
|
<refpurpose>Criptazione di una stringa a senso unico (hashing)</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Descrizione</title>
|
|
<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>
|
|
La funzione <function>crypt</function> restituisce una stringa criptata tramite
|
|
l'algoritmo standard di crittografia di UNIX basato sul <abbrev>DES</abbrev>
|
|
o su algoritmo alternativi disponibili sul sistema. I parametri sono
|
|
la stringa che deve essere crittografata, e un parametro opzionale da usarsi come
|
|
base per la crittografia. Vedere le pagine Unix relative alla funzione cript
|
|
per maggiori dettagli.
|
|
</para>
|
|
<simpara>
|
|
Se il parametro salt non viene fornito, il PHP ne genererà
|
|
uno casuale ad ogni chiamata.
|
|
</simpara>
|
|
<simpara>
|
|
Alcuni sistemi operativi supportano più di un tipo di cifratura. Infatti
|
|
in alcuni casi lo standard basato sul DES viene sostituito da un algoritmo
|
|
basato su MD5. Il tipo di crittografia da utilizzare viene attivato tramite il parametro
|
|
salt. Al momento dell'installazione il PHP cerca di determinare le caratteristiche
|
|
della funzione crypt e accetterà salt per altri tipi di funzioni.
|
|
Se il parametro salt non viene passato, il PHP genererà, per default, una chiave di due caratteri
|
|
a meno che il sistema di cifratura di default del sistema non sia MD5, in questo caso
|
|
si genererà una chiave casuale compatibile con MD5. Il PHP imposta
|
|
una costante chiamata CRYPT_SALT_LENGTH dalla quale si può sapere se sul sistema
|
|
si può utilizzare una chiave di due caratteri o la chiave più lunga di
|
|
12 caratteri.
|
|
</simpara>
|
|
<simpara>
|
|
Se si usa la chiave generata, bisogna fare attenzione che questa
|
|
viene generata una sola volta. Se si chiama la funzione ricorsivamente, si possono
|
|
avere dei problemi di formato e di sicurezza.
|
|
</simpara>
|
|
<simpara>
|
|
La crittografia basa sullo standard DES restituisce la chiave come
|
|
primi due caratteri dell'output. Inoltre utilizza solo i primi 8 caratteri
|
|
del parametro <parameter>str</parameter>, pertanto stringhe più lunghe
|
|
che inizino con i medesimi otto caratteri, creeranno il medesimo risultato
|
|
(se si utilizza la medesima chiave).
|
|
</simpara>
|
|
<simpara>
|
|
Sui sistemi nei quali la funzione cript() supporta più tipi
|
|
di crittografia, si imposteranno le seguenti costanti a 0 o a 1
|
|
in base al tipo disponibile.
|
|
</simpara>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
CRYPT_STD_DES - Standard basato su DES con chiave di due caratteri
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
CRYPT_EXT_DES - Estensione basato su DES con chiave di nove caratteri
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
CRYPT_MD5 - Crittografia basata su MD5 con 12 caratteri di chiave inizianti con
|
|
$1$
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
CRYPT_BLOWFISH - Crittografia Blowfish con 16 caratteri di chiave
|
|
inizianti con $2$ oppure $2a$
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<note>
|
|
<simpara>
|
|
Non esiste una funzione di decriptazione, poiché <function>crypt</function>
|
|
è un algoritmo ad una via.
|
|
</simpara>
|
|
</note>
|
|
<example>
|
|
<title>Esempio di uso di <function>crypt</function></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$password = crypt("My1sTpassword"); // let salt be generated
|
|
|
|
/* Si dovrebbe passare l'intero risultato di crypt() come chiave di confronto
|
|
della password per evitare problemi con differenti algoritmi di hash. (Come detto prima
|
|
lo standard basato su DES usa chiavi di 2 caratteri,
|
|
mentre lo standard basato su MD5 ne usa 12). */
|
|
if (crypt($user_input, $password) == $password) {
|
|
echo "Password verified!";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Utilizzo di <function>crypt</function> con htpasswd</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Set the password
|
|
$password = 'mypassword';
|
|
|
|
// Get the hash, letting the salt be automatically generated
|
|
$hash = crypt($password);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Uso dei diversi tipi di criptazione</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (CRYPT_STD_DES == 1) {
|
|
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
|
|
}
|
|
|
|
if (CRYPT_EXT_DES == 1) {
|
|
echo 'Extended DES: ' . 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[
|
|
Standard DES: rl.3StKT.4T8M
|
|
Extended DES: _J9..rasmBYk8r9AiWNc
|
|
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
|
|
Blowfish: $2a$07$rasmuslerd............nIdrcHdxcUxWomQX9j6kvERCFjTg7Ra
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
<simpara>
|
|
Vedere anche <function>md5</function> e <link linkend="ref.mcrypt">il
|
|
modulo Mcrypt</link>.
|
|
</simpara>
|
|
</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:"~/.phpdoc/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
|
|
-->
|