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.&lt;input-encoding&gt;.&lt;output-encoding&gt;</literal> veya
+    <literal>convert.iconv.&lt;input-encoding&gt;/&lt;output-encoding&gt;</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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.