svn: /phpdoc/tr/trunk/appendices/ filters.xml
[email protected] (Nilgün Belma Bugüner)
| Newsgroups | php.doc.tr |
|---|---|
| Message-ID | <[email protected]> |
nilgun Wed, 04 Dec 2019 11:50:11 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=348427
Log:
update for sync with English doc.
Changed paths:
U phpdoc/tr/trunk/appendices/filters.xml
svn-diffs-348427.txt
(text/x-diff, 31.6 KB)
Modified: phpdoc/tr/trunk/appendices/filters.xml
===================================================================
--- phpdoc/tr/trunk/appendices/filters.xml 2019-12-04 10:44:47 UTC (rev 348426)
+++ phpdoc/tr/trunk/appendices/filters.xml 2019-12-04 11:50:11 UTC (rev 348427)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 335018 Maintainer: nilgun Status: ready -->
+<!-- EN-Revision: 348383 Maintainer: nilgun Status: ready -->
<appendix xml:id="filters" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Kullanılabilir Süzgeçlerin Listesi</title>
<para>
@@ -42,14 +42,15 @@
ilgili işlevin kılavuz sayfasına bakınız.
</simpara>
- <simpara>
- <literal>string.rot13</literal>
- Bu süzgecin kullanımı, tüm akım verisinin
- <function>str_rot13</function> işlevi ile işlenmesine eşdeğerdir.
- </simpara>
- <example>
- <title>- <code>string.rot13</code> örneği</title>
- <programlisting role="php">
+ <section xml:id="filters.string.rot13">
+ <title>string.rot13</title>
+ <simpara>
+ Bu süzgecin kullanımı, tüm akım verisinin
+ <function>str_rot13</function> işlevi ile işlenmesine eşdeğerdir.
+ </simpara>
+ <example>
+ <title>- <code>string.rot13</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
@@ -58,17 +59,19 @@
/* Çıktısı: Oh ove qrarzrqve. */
?>
]]>
- </programlisting>
- </example>
-
- <simpara>
- <literal>string.toupper</literal>
- Bu süzgecin kullanımı, tüm akım verisinin
- <function>strtoupper</function> işlevi ile işlenmesine eşdeğerdir.
- </simpara>
- <example>
- <title>- <code>string.toupper</code> örneği</title>
- <programlisting role="php">
+ </programlisting>
+ </example>
+ </section>
+
+ <section xml:id="filters.string.toupper">
+ <title>string.toupper</title>
+ <simpara>
+ Bu süzgecin kullanımı, tüm akım verisinin
+ <function>strtoupper</function> işlevi ile işlenmesine eşdeğerdir.
+ </simpara>
+ <example>
+ <title>- <code>string.toupper</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
@@ -77,17 +80,19 @@
/* Çıktısı: BU KüçüK BIR DENEMEDIR. */
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
- <simpara>
- <literal>string.tolower</literal>
- Bu süzgecin kullanımı, tüm akım verisinin
- <function>strtolower</function> işlevi ile işlenmesine eşdeğerdir.
- </simpara>
- <example>
- <title>- <code>string.tolower</code> örneği</title>
- <programlisting role="php">
+ <section xml:id="filters.string.tolower">
+ <title>string.tolower</title>
+ <simpara>
+ Bu süzgecin kullanımı, tüm akım verisinin
+ <function>strtolower</function> işlevi ile işlenmesine eşdeğerdir.
+ </simpara>
+ <example>
+ <title>- <code>string.tolower</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
@@ -96,21 +101,26 @@
/* Çıktısı: bu küçük bir denemedir.. */
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
- <simpara>
- <literal>string.strip_tags</literal>
- (PHP 5.0.0 ve sonrası). Bu süzgecin kullanımı, tüm akım verisinin
- <function>strip_tags</function> işlevi ile işlenmesine eşdeğerdir.
- Değiştirge olarak şu iki biçimden birini kabul eder: Ya
- <function>strip_tags</function> işlevinin ikinci değiştirgesindeki gibi
- bir etiket listesi içeren bir dizi ya da etiket isimlerinden oluşan bir
- dizi.
- </simpara>
- <example>
- <title>- <code>string.strip_tags</code> örneği</title>
- <programlisting role="php">
+ <section xml:id="filters.string.strip_tags">
+ <title>string.strip_tags</title>
+ <simpara>
+ (PHP 5.0.0 ve sonrası). Bu süzgecin kullanımı, tüm akım verisinin
+ <function>strip_tags</function> işlevi ile işlenmesine eşdeğerdir.
+ Değiştirge olarak şu iki biçimden birini kabul eder: Ya
+ <function>strip_tags</function> işlevinin ikinci değiştirgesindeki gibi
+ bir etiket listesi içeren bir dizi ya da etiket isimlerinden oluşan bir
+ dizi.
+ </simpara>
+ <para>
+ &warn.deprecated.feature-7-3-0;
+ </para>
+ <example>
+ <title>- <code>string.strip_tags</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
@@ -126,11 +136,11 @@
/* Çıktısı: <b>kalın metin</b> 1. seviyeden bir başlık haline getirilir */
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
+</section>
- </section>
-
<section xml:id="filters.convert">
<title>Dönüşüm Süzgeçleri</title>
@@ -137,31 +147,30 @@
<simpara>
<literal>string.*</literal> süzgeçleri gibi, the
<literal>convert.*</literal> süzgeçleri de isimlerinde yazan eylemleri
- gerçekleştirirler. Dönüşüm süzgeçleri PHP 5.0.0'da eklenmiştir. Belli bir
- süzgeçle ilgili ayrıntılı bilgi edinmek için ilgili işlevin kılavuz
- sayfasına bakınız.
+ gerçekleştirirler. Belli bir süzgeçle ilgili ayrıntılı bilgi edinmek için
+ ilgili işlevin kılavuz sayfasına bakınız.
</simpara>
- <simpara>
- <literal>convert.base64-encode</literal> ve
- <literal>convert.base64-decode</literal>. Bu süzgeçlerin kullanımı, tüm
- akım verisinin sırasıyla <function>base64_encode</function> veya
- <function>base64_decode</function> işlevi ile işlenmesine eşdeğerdir.
- <literal>convert.base64-encode</literal> süzgeci değiştirgelerin bir
- ilişkisel dizi olarak belirtilmesini destekler.
-
- Eğer <parameter>line-length</parameter> değiştirgesi verilmişse base64
- çıktı, her biri <parameter>line-length</parameter> baytlık parçalara
- bölünür. Eğer <parameter>line-break-chars</parameter> değiştirgesi
- verilmişse çıktının her parçası belirtilen karakterle sınırlanır. Bu
- değiştirgeler <function>base64_encode</function> işlevinin
- <function>chunk_split</function> ile birlikte kullanımına eşdeğer bir
- etkiye sebep olur.
- </simpara>
- <example>
- <title>- <code>convert.base64-encode</code> ve
- <code>convert.base64-decode</code> örneği</title>
- <programlisting role="php">
+ <section xml:id="filters.convert.base64">
+ <title>convert.base64-encode ve convert.base64-decode</title>
+ <simpara>
+ Bu süzgeçlerin kullanımı, tüm
+ akım verisinin sırasıyla <function>base64_encode</function> veya
+ <function>base64_decode</function> işlevi ile işlenmesine eşdeğerdir.
+ <literal>convert.base64-encode</literal> süzgeci değiştirgelerin bir
+ ilişkisel dizi olarak belirtilmesini destekler.
+ Eğer <parameter>line-length</parameter> değiştirgesi verilmişse base64
+ çıktı, her biri <parameter>line-length</parameter> baytlık parçalara
+ bölünür. Eğer <parameter>line-break-chars</parameter> değiştirgesi
+ verilmişse çıktının her parçası belirtilen karakterle sınırlanır. Bu
+ değiştirgeler <function>base64_encode</function> işlevinin
+ <function>chunk_split</function> ile birlikte kullanımına eşdeğer bir
+ etkiye sebep olur.
+ </simpara>
+ <example>
+ <title>- <code>convert.base64-encode</code> ve
+ <code>convert.base64-decode</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
@@ -189,29 +198,31 @@
/* Çıktısı: Bu bir denemedir. */
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
- <simpara>
- <literal>convert.quoted-printable-encode</literal> ve
- <literal>convert.quoted-printable-decode</literal>. Bu süzgeçlerden kod
- çözme (decode) ile ilgili olanın kullanımı, tüm akım verisinin
- <function>quoted_printable_decode</function> işlevi ile işlenmesine
- eşdeğerdir. <literal>convert.quoted-printable-encode</literal> işlevine
- eşdeğer bir süzgeç yoktur.
- <literal>convert.quoted-printable-encode</literal> süzgeci
- değiştirgelerinin bir ilişkisel dizi olarak verilmesini destekler.
- <literal>convert.base64-encode</literal> süzgecinin değiştirgelerine ek
- olarak, <parameter>binary</parameter> ve
- <parameter>force-encode-first</parameter> değiştirgelerini de destekler.
- <literal>convert.quoted-printable-encode</literal> süzgeci, kodlanmış
- veriden yararlı yükü ayırmak için bir ipucu olarak sadece
- <parameter>line-break-chars</parameter> değiştirgesini destekler.
- </simpara>
- <example>
- <title>- <code>convert.quoted-printable-encode</code> ve
- <code>convert.quoted-printable-decode</code> örneği</title>
- <programlisting role="php">
+ <section xml:id="filters.covert.quoted-printable">
+ <title>convert.quoted-printable-encode ve convert.quoted-printable-decode</title>
+ <simpara>
+ Bu süzgeçlerden kod
+ çözme (decode) ile ilgili olanın kullanımı, tüm akım verisinin
+ <function>quoted_printable_decode</function> işlevi ile işlenmesine
+ eşdeğerdir. <literal>convert.quoted-printable-encode</literal> işlevine
+ eşdeğer bir süzgeç yoktur.
+ <literal>convert.quoted-printable-encode</literal> süzgeci
+ değiştirgelerinin bir ilişkisel dizi olarak verilmesini destekler.
+ <literal>convert.base64-encode</literal> süzgecinin değiştirgelerine ek
+ olarak, <parameter>binary</parameter> ve
+ <parameter>force-encode-first</parameter> değiştirgelerini de destekler.
+ <literal>convert.quoted-printable-encode</literal> süzgeci, kodlanmış
+ veriden yararlı yükü ayırmak için bir ipucu olarak sadece
+ <parameter>line-break-chars</parameter> değiştirgesini destekler.
+ </simpara>
+ <example>
+ <title>- <code>convert.quoted-printable-encode</code> ve
+ <code>convert.quoted-printable-decode</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
@@ -226,8 +237,37 @@
*/
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
+
+ <section xml:id="filters.convert.iconv">
+ <title>convert.iconv.*</title>
+ <simpara>
+ <literal>convert.iconv.*</literal> süzgeçleri
+ <link linkend="book.iconv">iconv</link> desteği etkinse kullanılabilir
+ olup tüm akım verisinin <function>iconv</function> ile işlenmesine
+ eşdeğerdir. Bu süzgeçler değiştirgeleri desteklememekle beraber girdi ve çıktı kodlamaları süzgeç isminin parçası olarak verilebilir. Örneğin,
+ <literal>convert.iconv.<input-encoding>.<output-encoding></literal> veya
+ <literal>convert.iconv.<input-encoding>/<output-encoding></literal>
+ (her iki gösterim anlamsal olarak eşdeğerdir).
+ </simpara>
+
+ <example>
+ <title>- <code>convert.iconv.*</code> örneği</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$fp = fopen('php://output', 'w');
+stream_filter_append($fp, 'convert.iconv.utf-16le.utf-8');
+fwrite($fp, "T\0h\0i\0s\0 \0i\0s\0 \0a\0 \0t\0e\0s\0t\0.\0\n\0");
+fclose($fp);
+/* Çıktısı: This is a test. */
+?>
+]]>
+ </programlisting>
+ </example>
+ </section>
</section>
<section xml:id="filters.compression">
@@ -251,42 +291,42 @@
</simpara>
</note>
- <simpara>
- <literal>zlib.deflate</literal> (sıkıştırma) ve
- <literal>zlib.inflate</literal> (açma) süzgeçleri <link
- xlink:href="&url.rfc;1951">RFC 1951</link>'de tanımlanan sıkıştırma
- yöntemlerini gerçekler. <literal>deflate</literal> (sıkıştırma) süzgeci,
- aktarılan üç değiştirgeyi bir ilişkisel dizi olarak kabul eder.
+ <section xml:id="filters.compression.zlib">
+ <title>zlib.deflate and zlib.inflate</title>
+ <simpara>
+ <link xlink:href="&url.rfc;1951">RFC 1951</link>'de tanımlanan sıkıştırma
+ yöntemlerini gerçekler. <literal>deflate</literal> (sıkıştırma) süzgeci,
+ aktarılan üç değiştirgeyi bir ilişkisel dizi olarak kabul eder.
- <parameter>level</parameter> değiştirgesi sıkıştırmanın derecesini (1-9)
- belirler. Büyük numaralar, küçüklerine göre genelde daha küçük yararlı yük
- oluşturmasına rağmen daha uzun işlem zamanına gerektirirler. Ayrıca iki
- özel sıkıştırma seviyesi daha mevcuttur: 0 (hiç sıkıştırma yapılmaz) ve -1
- (zlib yerleşik öntanımlısı; şimdilik 6).
+ <parameter>level</parameter> değiştirgesi sıkıştırmanın derecesini (1-9)
+ belirler. Büyük numaralar, küçüklerine göre genelde daha küçük yararlı yük
+ oluşturmasına rağmen daha uzun işlem zamanına gerektirirler. Ayrıca iki
+ özel sıkıştırma seviyesi daha mevcuttur: 0 (hiç sıkıştırma yapılmaz) ve -1
+ (zlib yerleşik öntanımlısı; şimdilik 6).
- <parameter>window</parameter> değiştirgesinin değeri, sıkıştırma döngüsü
- pencere genişliğinin 2 tabanına göre logaritmasıdır. Yüksek değerler
- (yukarda 15'e -- 32768 bayta kadar) daha büyük bellek tüketimi
- karşılığında daha çok sıkıştırma sağlarken, düşük değerler (aşağıda 9'a --
- 512 bayta kadar) daha az bellek tüketimi karşılığında daha az sıkıştırma
- sağlar. Öntanımlı <parameter>window</parameter> genişliği şimdilik
- <constant>15</constant>'tir.
+ <parameter>window</parameter> değiştirgesinin değeri, sıkıştırma döngüsü
+ pencere genişliğinin 2 tabanına göre logaritmasıdır. Yüksek değerler
+ (yukarda 15'e -- 32768 bayta kadar) daha büyük bellek tüketimi
+ karşılığında daha çok sıkıştırma sağlarken, düşük değerler (aşağıda 9'a --
+ 512 bayta kadar) daha az bellek tüketimi karşılığında daha az sıkıştırma
+ sağlar. Öntanımlı <parameter>window</parameter> genişliği şimdilik
+ <constant>15</constant>'tir.
- <parameter>memory</parameter> değiştirgesinin değeri ne kadar bellek
- ayrılacağını belirleyen bir katsayıdır. Geçerli değerler 1'den (en az
- bellek ayırma) 9'a (en çok bellek ayırma) kadardır. Bu bellek ayırma
- işlemi sadece hızı etkiler, üretilen yararlı yükün boyutuna etkisi yoktur.
- </simpara>
+ <parameter>memory</parameter> değiştirgesinin değeri ne kadar bellek
+ ayrılacağını belirleyen bir katsayıdır. Geçerli değerler 1'den (en az
+ bellek ayırma) 9'a (en çok bellek ayırma) kadardır. Bu bellek ayırma
+ işlemi sadece hızı etkiler, üretilen yararlı yükün boyutuna etkisi yoktur.
+ </simpara>
- <note>
+ <note>
+ <simpara>
+ Sıkıştırma seviyesi en çok kullanılan değiştirge olduğundan bir dizi
+ elemanı olarak belirtilebildiği gibi tek başına basit bir değiştirge
+ olarak da belirtilebilmektedir.
+ </simpara>
+ </note>
+
<simpara>
- Sıkıştırma seviyesi en çok kullanılan değiştirge olduğundan bir dizi
- elemanı olarak belirtilebildiği gibi tek başına basit bir değiştirge
- olarak da belirtilebilmektedir.
- </simpara>
- </note>
-
- <simpara>
<literal>zlib.*</literal> sıkıştırma süzgeçleri, <link
linkend="ref.zlib">zlib</link> desteği etkin olduğu takdirde PHP'nin
<literal>5.1.0</literal> sürümünden beri kullanılabilmektedir. Ayrıca,
@@ -294,12 +334,12 @@
(<link xlink:href="&url.pecl;">PECL</link> paketinden) kurulu olduğu
takdirde <literal>5.0.x</literal> sürümlerine de geriye dönük
uyarlanabilmektedir.
- </simpara>
+ </simpara>
- <example>
- <title>- <code>zlib.deflate</code> ve <code>zlib.inflate</code> örneği
- </title>
- <programlisting role="php">
+ <example>
+ <title>- <code>zlib.deflate</code> ve <code>zlib.inflate</code> örneği
+ </title>
+ <programlisting role="php">
<![CDATA[
<?php
$params = array('level' => 6, 'window' => 15, 'memory' => 9);
@@ -330,12 +370,12 @@
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
- <example>
- <title>- Basit bir <code>zlib.deflate</code> örneği</title>
- <programlisting role="php">
+ <example>
+ <title>- Basit bir <code>zlib.deflate</code> örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$özgün_metin = "Bu bir denemedir.\nBu sadece bir denemedir.\nBu önemsiz bir dizgedir.\n";
@@ -357,38 +397,41 @@
*/
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
- <simpara>
- <literal>bzip2.compress</literal> ve <literal>bzip2.decompress</literal>
- süzgeçleri yukarıda açıklanan <literal>zlib</literal> süzgeçleriyle aynı
- anlamda çalışırlar.
+ <section xml:id="filters.compression.bzip2">
+ <title>bzip2.compress and bzip2.decompress</title>
+ <simpara>
+ <literal>bzip2.compress</literal> ve <literal>bzip2.decompress</literal>
+ süzgeçleri yukarıda açıklanan <literal>zlib</literal> süzgeçleriyle aynı
+ anlamda çalışırlar.
- <literal>bzip2.compress</literal> süzgeci bir ilişkisel dizinin elemanları
- olarak iki değiştirge kabul eder:
+ <literal>bzip2.compress</literal> süzgeci bir ilişkisel dizinin elemanları
+ olarak iki değiştirge kabul eder:
- <parameter>blocks</parameter> değiştirgesi, çalışma alanı için ayrılacak
- belleğin 100 kbaytlık katları olarak 1'den 9'a kadar bir tamsayıdır.
+ <parameter>blocks</parameter> değiştirgesi, çalışma alanı için ayrılacak
+ belleğin 100 kbaytlık katları olarak 1'den 9'a kadar bir tamsayıdır.
- <parameter>work</parameter> değiştirgesi de bir tamsayı olup, son çare
- olarak daha yavaş fakat daha güvenilir bir yönteme başvurmadan önce normal
- bir sıkıştırma yöntemine ne kadar çaba harcanacağını belirten 0'dan 250'ye
- kadar bir değerdir. Bu değiştirge sadece hız üzerinde etkilidir. Bu
- ayardan ne sıkıştırılmış çıktının boyu ne de bellek kullanımı etkilenir. 0
- değeri bzip kütüphanesinin yerleşik öntanımlısının kullanılacağı anlamına
- gelir.
+ <parameter>work</parameter> değiştirgesi de bir tamsayı olup, son çare
+ olarak daha yavaş fakat daha güvenilir bir yönteme başvurmadan önce normal
+ bir sıkıştırma yöntemine ne kadar çaba harcanacağını belirten 0'dan 250'ye
+ kadar bir değerdir. Bu değiştirge sadece hız üzerinde etkilidir. Bu
+ ayardan ne sıkıştırılmış çıktının boyu ne de bellek kullanımı etkilenir. 0
+ değeri bzip kütüphanesinin yerleşik öntanımlısının kullanılacağı anlamına
+ gelir.
- <literal>bzip2.decompress</literal> süzgeci tek bir değiştirge kabul eder.
- Ya sıradan bir mantıksal değer ya da <parameter>small</parameter>
- anahtarlı tek elemanı olan bir ilişkisel dizidir.
+ <literal>bzip2.decompress</literal> süzgeci tek bir değiştirge kabul eder.
+ Ya sıradan bir mantıksal değer ya da <parameter>small</parameter>
+ anahtarlı tek elemanı olan bir ilişkisel dizidir.
- <parameter>small</parameter> değiştirgesine &true; değerinin atanması,
- bzip2 kütüphanesinin sıkıştırmayı açmak için hız pahasına en az belleği
- ayıracağı anlamına gelir.
- </simpara>
+ <parameter>small</parameter> değiştirgesine &true; değerinin atanması,
+ bzip2 kütüphanesinin sıkıştırmayı açmak için hız pahasına en az belleği
+ ayıracağı anlamına gelir.
+ </simpara>
- <simpara>
+ <simpara>
<literal>bzip2.*</literal> sıkıştırma süzgeçleri, <link
linkend="ref.bzip2">bz2</link> desteği etkin olduğu takdirde PHP'nin
<literal>5.1.0</literal> sürümünden beri kullanılabilmektedir. <link
@@ -396,12 +439,12 @@
xlink:href="&url.pecl;">PECL</link> paketindeki) kurulu olduğu takdirde
<literal>5.0.x</literal> sürümlerinde geriye dönük olarak
kullanılabilmektedir.
- </simpara>
+ </simpara>
- <example>
- <title>- <code>bzip2.compress</code> ve <code>bzip2.decompress</code>
- örneği</title>
- <programlisting role="php">
+ <example>
+ <title>- <code>bzip2.compress</code> ve <code>bzip2.decompress</code>
+ örneği</title>
+ <programlisting role="php">
<![CDATA[
<?php
$param = array('blocks' => 9, 'work' => 0);
@@ -423,122 +466,223 @@
*/
?>
]]>
- </programlisting>
- </example>
+ </programlisting>
+ </example>
+ </section>
</section>
<section xml:id="filters.encryption">
<title>Şifreleme Süzgeçleri</title>
-
- <simpara>
- <literal>mcrypt.*</literal> ve <literal>mdecrypt.*</literal> süzgeçleri
- libmcrypt kullanarak bakışımlı şifreleme ve şifre çözme yaparlar. Her iki
- süzgeç ailesi de <literal>mcrypt.şifreismi</literal> biçeminde <link
- linkend="ref.mcrypt">mcrypt eklentisinde</link> kullanılan algoritmaları
- desteklerler; buradaki <parameter>şifreismi</parameter>
- <function>mcrypt_module_open</function> işlevine aktarıldığı şekliyle
- şifrenin ismidir. Ayrıca, aşağıdaki beş süzgeç değiştirgesi de
- kullanılabilmektedir:
- </simpara>
-
<para>
- <table>
- <title>mcrypt süzgeç değiştirgeleri</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Değiştirge</entry>
- <entry>Gereklilik</entry>
- <entry>Öntanımlı</entry>
- <entry>Örnek değerler</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>mode</entry>
- <entry>seçimlik</entry>
- <entry>cbc</entry>
- <entry>cbc, cfb, ecb, nofb, ofb, stream</entry>
- </row>
- <row>
- <entry>algorithms_dir</entry>
- <entry>seçimlik</entry>
- <entry>ini_get('mcrypt.algorithms_dir')</entry>
- <entry>Algoritma modüllerinin yeri</entry>
- </row>
- <row>
- <entry>modes_dir</entry>
- <entry>seçimlik</entry>
- <entry>ini_get('mcrypt.modes_dir')</entry>
- <entry>Kip modüllerinin yeri</entry>
- </row>
- <row>
- <entry>iv</entry>
- <entry>gerekli</entry>
- <entry>yok</entry>
- <entry>Genelde 8, 16 veya 32 baytlık ikil veri. Şifreye bağlı.</entry>
- </row>
- <row>
- <entry>key</entry>
- <entry>gerekli</entry>
- <entry>yok</entry>
- <entry>Genelde 8, 16 veya 32 baytlık ikil veri. Şifreye bağlı.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
+ Şifreleme süzgeçleri öxellikle dosya/akım şifrelemesinde kullanışlıdır.
</para>
+
+ <section xml:id="filters.encryption.mcrypt">
+ <title>mcrypt.* ve mdecrypt.*</title>
+ <para>
+ &warn.deprecated.feature-7-1-0;
+ </para>
+
+ <simpara>
+ <literal>mcrypt.*</literal> ve <literal>mdecrypt.*</literal> süzgeçleri
+ libmcrypt kullanarak bakışımlı şifreleme ve şifre çözme yaparlar. Her iki
+ süzgeç ailesi de <literal>mcrypt.şifreismi</literal> biçeminde <link
+ linkend="ref.mcrypt">mcrypt eklentisinde</link> kullanılan algoritmaları
+ desteklerler; buradaki <parameter>şifreismi</parameter>
+ <function>mcrypt_module_open</function> işlevine aktarıldığı şekliyle
+ şifrenin ismidir. Ayrıca, aşağıdaki beş süzgeç değiştirgesi de
+ kullanılabilmektedir:
+ </simpara>
- <example>
- <title>- 3DES kullanarak şifreli dosya çıktılama</title>
- <programlisting role="php">
+ <para>
+ <table>
+ <title>mcrypt süzgeç değiştirgeleri</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Değiştirge</entry>
+ <entry>Gereklilik</entry>
+ <entry>Öntanımlı</entry>
+ <entry>Örnek değerler</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>mode</entry>
+ <entry>seçimlik</entry>
+ <entry>cbc</entry>
+ <entry>cbc, cfb, ecb, nofb, ofb, stream</entry>
+ </row>
+ <row>
+ <entry>algorithms_dir</entry>
+ <entry>seçimlik</entry>
+ <entry>ini_get('mcrypt.algorithms_dir')</entry>
+ <entry>Algoritma modüllerinin yeri</entry>
+ </row>
+ <row>
+ <entry>modes_dir</entry>
+ <entry>seçimlik</entry>
+ <entry>ini_get('mcrypt.modes_dir')</entry>
+ <entry>Kip modüllerinin yeri</entry>
+ </row>
+ <row>
+ <entry>iv</entry>
+ <entry>gerekli</entry>
+ <entry>yok</entry>
+ <entry>Genelde 8, 16 veya 32 baytlık ikil veri. Şifreye bağlı.</entry>
+ </row>
+ <row>
+ <entry>key</entry>
+ <entry>gerekli</entry>
+ <entry>yok</entry>
+ <entry>Genelde 8, 16 veya 32 baytlık ikil veri. Şifreye bağlı.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ <example>
+ <title>- 3DES kullanarak şifreli dosya çıktılama</title>
+ <programlisting role="php">
<![CDATA[
<?php
-$passphrase = 'Anahtar Parolam';
+//$key evvelce üretilmiş varsayılıyor
+$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
+$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
+$fp = fopen('encrypted-file.enc', 'wb');
+fwrite($fp, $iv);
+$opts = array('mode'=>'cbc','iv'=>$iv, 'key'=>$key);
+stream_filter_append($fp, 'mcrypt.blowfish', STREAM_FILTER_WRITE, $opts);
+fwrite($fp, 'message to encrypt');
+fclose($fp);
-/* Çoğaltılabilen iv/key çiftine insanlarca
- * okunabilecek bir anahtar parolası yazalım
- */
-$iv = substr(md5('iv'.$passphrase, true), 0, 8);
-$key = substr(md5('pass1'.$passphrase, true) .
- md5('pass2'.$passphrase, true), 0, 24);
-$opts = array('iv'=>$iv, 'key'=>$key);
-
-$fp = fopen('gizli-dosya.enc', 'wb');
-stream_filter_append($fp, 'mcrypt.tripledes', STREAM_FILTER_WRITE, $opts);
-fwrite($fp, 'Gizli mi gizli gipgizli veri');
+//decrypt...
+$fp = fopen('encrypted-file.enc', 'rb');
+$iv = fread($fp, $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC));
+$opts = array('mode'=>'cbc','iv'=>$iv, 'key'=>$key)
+stream_filter_append($fp, 'mdecrypt.blowfish', STREAM_FILTER_READ, $opts);
+$data = rtrim(stream_get_contents($fp));//null dizesi temizleniyor
fclose($fp);
+echo $data;
?>
]]>
- </programlisting>
- </example>
-
- <example>
- <title>- Şifreli dosyanın okunması</title>
- <programlisting role="php">
+ </programlisting>
+ </example>
+ <example>
+ <title>PHP 5'de SHA256 HMAC ile AES-128 CBC kullanarak dosya şifreleme</title>
+ <programlisting role="php">
<![CDATA[
<?php
-$passphrase = 'Anahtar Parolam';
+AES_CBC::encryptFile($password, "plaintext.txt", "encrypted.enc");
+AES_CBC::decryptFile($password, "encrypted.enc", "decrypted.txt");
-/* Çoğaltılabilen iv/key çiftine insanlarca
- * okunabilecek bir anahtar parolası yazalım
- */
-$iv = substr(md5('iv'.$passphrase, true), 0, 8);
-$key = substr(md5('pass1'.$passphrase, true) .
- md5('pass2'.$passphrase, true), 0, 24);
-$opts = array('iv'=>$iv, 'key'=>$key);
-
-$fp = fopen('gizli-dosya.enc', 'rb');
-stream_filter_append($fp, 'mdecrypt.tripledes', STREAM_FILTER_READ, $opts);
-$data = rtrim(stream_get_contents($fp));
-fclose($fp);
-
-echo $data;
-?>
+class AES_CBC
+{
+ protected static $KEY_SIZES = array('AES-128'=>16,'AES-192'=>24,'AES-256'=>32);
+ protected static function key_size() { return self::$KEY_SIZES['AES-128']; } //default AES-128
+ public static function encryptFile($password, $input_stream, $aes_filename){
+ $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+ $fin = fopen($input_stream, "rb");
+ $fc = fopen($aes_filename, "wb+");
+ if (!empty($fin) && !empty($fc)) {
+ fwrite($fc, str_repeat("_", 32) );//placeholder, SHA256 HMAC will go here later
+ fwrite($fc, $hmac_salt = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM));
+ fwrite($fc, $esalt = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM));
+ fwrite($fc, $iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM));
+ $ekey = hash_pbkdf2("sha256", $password, $esalt, $it=1000, self::key_size(), $raw=true);
+ $opts = array('mode'=>'cbc', 'iv'=>$iv, 'key'=>$ekey);
+ stream_filter_append($fc, 'mcrypt.rijndael-128', STREAM_FILTER_WRITE, $opts);
+ $infilesize = 0;
+ while (!feof($fin)) {
+ $block = fread($fin, 8192);
+ $infilesize+=strlen($block);
+ fwrite($fc, $block);
+ }
+ $block_size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+ $padding = $block_size - ($infilesize % $block_size);//$padding is a number from 1-16
+ fwrite($fc, str_repeat(chr($padding), $padding) );//perform PKCS7 padding
+ fclose($fin);
+ fclose($fc);
+ $hmac_raw = self::calculate_hmac_after_32bytes($password, $hmac_salt, $aes_filename);
+ $fc = fopen($aes_filename, "rb+");
+ fwrite($fc, $hmac_raw);//overwrite placeholder
+ fclose($fc);
+ }
+ }
+ public static function decryptFile($password, $aes_filename, $out_stream) {
+ $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+ $hmac_raw = file_get_contents($aes_filename, false, NULL, 0, 32);
+ $hmac_salt = file_get_contents($aes_filename, false, NULL, 32, $iv_size);
+ $hmac_calc = self::calculate_hmac_after_32bytes($password, $hmac_salt, $aes_filename);
+ $fc = fopen($aes_filename, "rb");
+ $fout = fopen($out_stream, 'wb');
+ if (!empty($fout) && !empty($fc) && self::hash_equals($hmac_raw,$hmac_calc)) {
+ fread($fc, 32+$iv_size);//skip sha256 hmac and salt
+ $esalt = fread($fc, $iv_size);
+ $iv = fread($fc, $iv_size);
+ $ekey = hash_pbkdf2("sha256", $password, $esalt, $it=1000, self::key_size(), $raw=true);
+ $opts = array('mode'=>'cbc', 'iv'=>$iv, 'key'=>$ekey);
+ stream_filter_append($fc, 'mdecrypt.rijndael-128', STREAM_FILTER_READ, $opts);
+ while (!feof($fc)) {
+ $block = fread($fc, 8192);
+ if (feof($fc)) {
+ $padding = ord($block[strlen($block) - 1]);//assume PKCS7 padding
+ $block = substr($block, 0, 0-$padding);
+ }
+ fwrite($fout, $block);
+ }
+ fclose($fout);
+ fclose($fc);
+ }
+ }
+ private static function hash_equals($str1, $str2) {
+ if(strlen($str1) == strlen($str2)) {
+ $res = $str1 ^ $str2;
+ for($ret=0,$i = strlen($res) - 1; $i >= 0; $i--) $ret |= ord($res[$i]);
+ return !$ret;
+ }
+ return false;
+ }
+ private static function calculate_hmac_after_32bytes($password, $hsalt, $filename) {
+ static $init=0;
+ $init or $init = stream_filter_register("user-filter.skipfirst32bytes", "FileSkip32Bytes");
+ $stream = 'php://filter/read=user-filter.skipfirst32bytes/resource=' . $filename;
+ $hkey = hash_pbkdf2("sha256", $password, $hsalt, $iterations=1000, 24, $raw=true);
+ return hash_hmac_file('sha256', $stream, $hkey, $raw=true);
+ }
+}
+class FileSkip32Bytes extends php_user_filter
+{
+ private $skipped=0;
+ function filter($in, $out, &$consumed, $closing) {
+ while ($bucket = stream_bucket_make_writeable($in)) {
+ $outlen = $bucket->datalen;
+ if ($this->skipped<32){
+ $outlen = min($bucket->datalen,32-$this->skipped);
+ $bucket->data = substr($bucket->data, $outlen);
+ $bucket->datalen = $bucket->datalen-$outlen;
+ $this->skipped+=$outlen;
+ }
+ $consumed += $outlen;
+ stream_bucket_append($out, $bucket);
+ }
+ return PSFS_PASS_ON;
+ }
+}
+class AES_128_CBC extends AES_CBC {
+ protected static function key_size() { return self::$KEY_SIZES['AES-128']; }
+}
+class AES_192_CBC extends AES_CBC {
+ protected static function key_size() { return self::$KEY_SIZES['AES-192']; }
+}
+class AES_256_CBC extends AES_CBC {
+ protected static function key_size() { return self::$KEY_SIZES['AES-256']; }
+}
]]>
- </programlisting>
- </example>
-
+ </programlisting>
+ </example>
+ </section>
</section>
</appendix>