-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathcrypt.xml
More file actions
264 lines (253 loc) · 9.35 KB
/
crypt.xml
File metadata and controls
264 lines (253 loc) · 9.35 KB
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d76a7fe17dd2488e47d664a8ab38e161b13ac843 Maintainer: nilgun Status: ready -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.crypt">
<refnamediv>
<refname>crypt</refname>
<refpurpose>Tek yönlü dizge aşlama</refpurpose>
</refnamediv>
<refsynopsisdiv>
¬e.not-bin-safe;
</refsynopsisdiv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>crypt</methodname>
<methodparam><modifier role="attribute">#[\SensitiveParameter]</modifier><type>string</type><parameter>dizge</parameter></methodparam>
<methodparam><type>string</type><parameter>tuz</parameter></methodparam>
</methodsynopsis>
<para>
<function>crypt</function> işlevi standart Unix <abbrev>DES</abbrev>
şifreleme algoritmasını veya sistemdeki uygun algoritmalardan birini
kullanarak <parameter>dizge</parameter> dizgesinin aşlanmış sürümünü
döndürür.
<function>password_verify</function> işlevi <function>crypt</function>
işlevi ile uyumludur. Bu bakımdan <function>crypt</function> ile
oluşturulan parola aşları <function>password_verify</function> ile
kullanılabilir.
</para>
<para>
PHP 8.0.0 öncesinde <parameter>tuz</parameter> bağımsız değişkeni isteğe
bağlıydı. Bununla birlikte, <function>crypt</function> tuzsuz zayıf
bir aş oluşturur ve bu durumda bir <constant>E_NOTICE</constant>
seviyesinde bir hatası üretir. Daha iyi güvenlik için yeterince güçlü
bir tuz belirlemek gerekir.
</para>
<para>
<function>password_hash</function> güçlü bir aş kullanır, güçlü bir tuz
üretir ve uygun turları otomatik olarak uygular.
<function>password_hash</function> basit bir <function>crypt</function>
sarmalayıcısıdır ve mevcut parola aşlarıyla uyumludur.
<function>password_hash</function> kullanmak daha güvenlidir ve önerilir.
</para>
<para>
Aş türü <parameter>tuz</parameter> bağımsız değişkeniyle tetiklenir.
<parameter>tuz</parameter> belirtilmemişse ya standart iki karakterlik (DES)
ya da MD5 şifrelemesinin varlığına bağlı olarak oniki karakterlik tuz otomatik
olarak üretilir. PHP, kullanılabilecek aşlar tarafından izin verilen geçerli
en uzun tuzu belirleyen <constant>CRYPT_SALT_LENGTH</constant> adında bir
sabit içerir.
</para>
<para>
Standart DES şifrelemesinde <function>crypt</function> işlevi tuz olarak
çıktının ilk iki karakterini döndürür. Ayrıca, dizgenin sadece ilk sekiz
karakterini kullanır, bu nedenle ilk sekiz karakteri aynı olan sekiz
karakterden daha uzun dizgeler için tuz aynı olduğu sürece hep aynı sonucu
üretir.
</para>
<simpara>
Desteklenen aş türleri:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>CRYPT_STD_DES</constant> - "./0-9A-Za-z" kalıbından
iki karakter içeren standart DES aşı. Tuzda geçersiz karakter kullanımı
işlevin başarısız olmasına sebep olur.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_EXT_DES</constant> - Dokuz karakterlik tuz kullanan
gelişkin DES aşı. "Tuz", bir alt çizginin ardından 4 karakterlik yineleme
sayısı ve 4 karakterlik tuzdan oluşan 9 karakterli bir dizedir. Bu 4
karakterlik dizelerin herbiri 24 bitle kodlanır ve en düşük değerli
karakter baştadır. <literal>0</literal> ila <literal>63</literal>
arasındaki değerler <literal>./0-9A-Za-z</literal> kalıbından kodlanmıştır.
Tuzda geçersiz karakter kullanımı, işlevin başarısız olmasına sebep olur.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_MD5</constant> - $1$ ile başlayan on iki karakterlik MD5
aşı.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_BLOWFISH</constant> - Tuzlu blowfish aşı şöyle oluşur:
"$2a$", "$2x$" veya "$2y$", iki basamaklı bir bedel bağımsız değişkeni,
"$" ve "./0-9A-Za-z" kalıbından 22 karakter. Tuzda bu aralığın dışındaki
karakterlerin kullanılması, işlevin sıfır uzunluklu bir dize döndürmesine
sebep olur. İki basamaklı bedel bağımsız değişkeni, temel Blowfish tabanlı
aşlama algoritması için yineleme sayımının 2'lik tabanda logaritmasıdır
ve 04-31 aralığında olmalıdır; bu aralığın dışındaki değerler işlevin
başarısız olmasına sebep olur. "$2x$" aşları görece zayıftır; "$2a$"
aşları uyumludur ve bu zayıflığı azaltır. Yeni aşlar için "$2y$"
kullanılmalıdır.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_SHA256</constant> - SHA-256 aşı, $5$ ile başlayan
onaltı karakterlik bir tuza sahiptir. Tuz dizesi 'rounds=<N>$'
ile başlıyorsa, N'nin sayısal değeri, Blowfish'teki bedel bağımsız değişkenine
benzer şekilde, aşlama döngüsündeki tur sayısını belirtmek için
kullanılır. Öntanımlı tur sayısı 5000'dir, en az 1000 ve en çok
999.999.999'dur. Bu aralığın dışında bir N seçilirse en yakın sınır
değer kullanılır.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_SHA512</constant> - SHA-512 aşı, $6$ ile başlayan
onaltı karakterlik bir tuza sahiptir. Tuz dizesi 'rounds=<N>$'
ile başlıyorsa, N'nin sayısal değeri, Blowfish'teki bedel bağımsız değişkenine
benzer şekilde, aşlama döngüsündeki tur sayısını belirtmek için
kullanılır. Öntanımlı tur sayısı 5000'dir, en az 1000 ve en çok
999.999.999'dur. Bu aralığın dışında bir N seçilirse en yakın sınır
değer kullanılır.
</simpara>
</listitem>
</itemizedlist>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>dizge</parameter></term>
<listitem>
<para>
Aşlanacak dizge.
</para>
<caution>
<para>
<constant>CRYPT_BLOWFISH</constant> algoritmasının kullanımı,
<parameter>dizge</parameter> bağımsız değişkeninin 72 bayt uzunlukta
kırpılmasına sebep olur.
</para>
</caution>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>tuz</parameter></term>
<listitem>
<para>
Aşlamaye göre değişen tuz dizgesi. Belirtilmezse,
davranış algoritma gerçeklenimi tarafından tanımlanır ve beklenmedik
sonuçlara yol açabilir.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Aşlama uygulanmış dizge veya 13 karakterden daha kısa olan ve başarısızlık
durumunda tuzdan farklı olacağı garanti edilen bir dizge döndürür.
</para>
<warning>
<simpara>
Parolalar doğrulanırken, <function>crypt</function> çıktısını önceden
bilinen aş ile karşılaştırmak için zamanlama saldırılarına açık olmayan
bir dizge karşılaştırma işlevi kullanılmalıdır. PHP'de bu kullanım için
<function>hash_equals</function> işlevi bulunur.
</simpara>
</warning>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>tuz</parameter> bağımsız değişkeni artık isteğe bağlı değil.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>- <function>crypt</function> örnekleri</title>
<programlisting role="php">
<![CDATA[
<?php
$kullanıcı_girdisi = 'rasmuslerdorf';
$aşlıParola = '$6$rounds=1000000$NJy4rIPjpOaU$0ACEYGg/aKCY3v8O8AfyiO7CTfZQ8/W231Qfh2tRLmfdvFD6XfHk12u6hMr9cYIA4hnpjLNSTRtUwYr9km9Ij/';
// Mevcut crypt() aşını PHP dışı yazılımlarla uyumlu olacak şekilde doğrula.
if (hash_equals($aşlıParola, crypt($kullanıcı_girdisi, $aşlıParola))) {
echo "Parola doğru!";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<simpara>
<function>crypt</function> tek yönlü algoritma kullandığından tekrar özgün
dizgeyi elde etmeyi sağlayacak bir işlev yoktur.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>hash_equals</function></member>
<member><function>password_hash</function></member>
<member><link xlink:href="http://belgeler.gen.tr/man/man3/man3-crypt.html">
crypt işlevinin Unix kılavuz sayfası</link></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:"~/.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
-->