-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcrypt.xml
179 lines (173 loc) · 6.06 KB
/
crypt.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?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
-->