svn: /phpdoc/pt_BR/trunk/appendices/ filters.xml

[email protected] (André Luis Ferreira da Silva Bacci)
Newsgroups php.doc.pt-br
Message-ID <[email protected]>
ae                                       Sun, 01 Dec 2019 17:34:33 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=348393

Log:
Update translation.

Changed paths:
    U   phpdoc/pt_BR/trunk/appendices/filters.xml
svn-diffs-348393.txt (text/x-diff, 33 KB)
Modified: phpdoc/pt_BR/trunk/appendices/filters.xml
===================================================================
--- phpdoc/pt_BR/trunk/appendices/filters.xml	2019-12-01 15:39:28 UTC (rev 348392)
+++ phpdoc/pt_BR/trunk/appendices/filters.xml	2019-12-01 17:34:33 UTC (rev 348393)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 343447 Maintainer: fibbarth Status: ready --><!-- CREDITS: narigone, diegopires, adiel -->
+<!-- EN-Revision: 348383 Maintainer: ae Status: ready --><!-- CREDITS: narigone,diegopires,adiel,fibbarth,ae -->
 <appendix xml:id="filters" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <title>Lista de Filtros Disponíveis</title>
  <para>
@@ -45,14 +45,15 @@
    a função correspondente.
   </simpara>

-  <simpara>
-   <literal>string.rot13</literal>
-   O uso desse filtro é equivalente a processar todos os dados da stream com
-   a função <function>str_rot13</function>.
-  </simpara>
-  <example>
+  <section xml:id="filters.string.rot13">
    <title>string.rot13</title>
-   <programlisting role="php">
+   <simpara>
+    O uso desse filtro é equivalente a processar todos os dados da stream com
+    a função <function>str_rot13</function>.
+   </simpara>
+   <example>
+    <title>string.rot13</title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $fp = fopen('php://output', 'w');
@@ -61,17 +62,19 @@
 /* Saída:  Vfgb é hz grfgr.   */
 ?>
 ]]>
-   </programlisting>
-  </example>
+    </programlisting>
+   </example>
+  </section>

-  <simpara>
-   <literal>string.toupper</literal>
-   O uso desse filtro é equivalente a processar todos os dados da stream com
-   a função <function>strtoupper</function>.
-  </simpara>
-  <example>
+  <section xml:id="filters.string.toupper">
    <title>string.toupper</title>
-   <programlisting role="php">
+   <simpara>
+    O uso desse filtro é equivalente a processar todos os dados da stream com
+    a função <function>strtoupper</function>.
+   </simpara>
+   <example>
+    <title>string.toupper</title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $fp = fopen('php://output', 'w');
@@ -80,17 +83,19 @@
 /* Saída:  ISTO é UM TESTE.   */
 ?>
 ]]>
-   </programlisting>
-  </example>
+    </programlisting>
+   </example>
+  </section>

-  <simpara>
-   <literal>string.tolower</literal>
-   O uso desse filtro é equivalente a processar todos os dados da stream com
-   a função <function>strtolower</function>.
-  </simpara>
-  <example>
+  <section xml:id="filters.string.tolower">
    <title>string.tolower</title>
-   <programlisting role="php">
+   <simpara>
+    O uso desse filtro é equivalente a processar todos os dados da stream com
+    a função <function>strtolower</function>.
+   </simpara>
+   <example>
+    <title>string.tolower</title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $fp = fopen('php://output', 'w');
@@ -99,22 +104,26 @@
 /* Saída:  isto é um teste.   */
 ?>
 ]]>
-   </programlisting>
-  </example>
+    </programlisting>
+   </example>
+  </section>

-  <simpara>
-   <literal>string.strip_tags</literal>
-   (desde o PHP 5.0.0)
-   O uso desse filtro é equivalente a processar todos os dados da stream com
-   a função <function>strip_tags</function>.
-   Ela aceita parâmetros em uma das duas formas:
-   Ou como uma string contendo uma lista de tags similares ao
-   segundo parâmetro da função <function>strip_tags</function>,
-   ou como um array com os nomes das tags.
-  </simpara>
-  <example>
+  <section xml:id="filters.string.strip_tags">
    <title>string.strip_tags</title>
-   <programlisting role="php">
+   <simpara>
+    O uso desse filtro é equivalente a processar todos os dados da stream com
+    a função <function>strip_tags</function>.
+    Ela aceita parâmetros em uma das duas formas:
+    Ou como uma string contendo uma lista de tags similares ao
+    segundo parâmetro da função <function>strip_tags</function>,
+    ou como um array com os nomes das tags.
+   </simpara>
+   <para>
+    &warn.deprecated.feature-7-3-0;
+   </para>
+   <example>
+    <title>string.strip_tags</title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $fp = fopen('php://output', 'w');
@@ -130,9 +139,9 @@
 /* Saída:  <b>texto em negrito</b> aumentado para um heading de nível 1   */
 ?>
 ]]>
-   </programlisting>
-  </example>
-
+    </programlisting>
+   </example>
+  </section>
  </section>

  <section xml:id="filters.convert">
@@ -140,32 +149,31 @@

   <simpara>
    Como todos os filtros string.*, os filtros convert.* realizam ações
-   similares aos seus nomes. Os filtros de conversão foram adicionados com o
-   PHP 5.0.0.
+   similares aos seus nomes.
    Para mais informações sobre um determinado filtro, veja a página do manual para
    a função correspondente.
   </simpara>

-  <simpara>
-   <literal>convert.base64-encode</literal> e
-   <literal>convert.base64-decode</literal>
-   O uso desses filtros é equivalente a processar todos os dados da stream com as
-   funções <function>base64_encode</function> e <function>base64_decode</function>
-   respectivamente.
-   <literal>convert.base64-encode</literal> suporta parâmetros no formato de
-   um array associativo. Se <parameter>line-length</parameter> for passado, a
-   saída do base64 será dividida em pedaços de <parameter>line-length</parameter>
-   caracteres cada. Se <parameter>line-break-chars</parameter> for passado, cada
-   pedaço será delimitado pelos caracteres passados. Esses parâmetros dão o
-   mesmo efeito que usar <function>base64_encode</function> com
-   <function>chunk_split</function>.
-  </simpara>
-  <example>
-   <title>
-    convert.base64-encode &amp;
-    convert.base64-decode
-   </title>
-   <programlisting role="php">
+  <section xml:id="filters.convert.base64">
+   <title>convert.base64-encode e convert.base64-decode</title>
+   <simpara>
+    O uso desses filtros é equivalente a processar todos os dados da stream com as
+    funções <function>base64_encode</function> e <function>base64_decode</function>
+    respectivamente.
+    <literal>convert.base64-encode</literal> suporta parâmetros no formato de
+    um array associativo. Se <parameter>line-length</parameter> for passado, a
+    saída do base64 será dividida em pedaços de <parameter>line-length</parameter>
+    caracteres cada. Se <parameter>line-break-chars</parameter> for passado, cada
+    pedaço será delimitado pelos caracteres passados. Esses parâmetros dão o
+    mesmo efeito que usar <function>base64_encode</function> com
+    <function>chunk_split</function>.
+   </simpara>
+   <example>
+    <title>
+     convert.base64-encode &amp;
+     convert.base64-decode
+    </title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $fp = fopen('php://output', 'w');
@@ -190,29 +198,30 @@
 /* Saída:  Isto é um teste.  */
 ?>
 ]]>
-   </programlisting>
-  </example>
+    </programlisting>
+   </example>
+  </section>

-  <simpara>
-   <literal>convert.quoted-printable-encode</literal> e
-   <literal>convert.quoted-printable-decode</literal>
-   O uso da versão de decodificação desse filtro é equivalente ao processamento de todos os dados
-   da stream pelas funções <function>quoted_printable_decode</function>.
-   Não há nenhuma função equivalente a <literal>convert.quoted-printable-encode</literal>.
-   <literal>convert.quoted-printable-encode</literal> suporta parâmetros passados como
-   um array associativo. Além dos parâmetros suportados por
-   <literal>convert.base64-encode</literal>, <literal>convert.quoted-printable-encode</literal>
-   também suporta os argumentos booleanos <parameter>binary</parameter> e
-   <parameter>force-encode-first</parameter>.
-   <literal>convert.base64-decode</literal> suporta apenas o
-   parâmetro <parameter>line-break-chars</parameter> como uma dica de tipo
-   para retirar do conteúdo codificado.
-  </simpara>
-  <example>
-   <title>
-    convert.quoted-printable-encode &amp;
-    convert.quoted-printable-decode
-   </title>
+  <section xml:id="filters.covert.quoted-printable">
+   <title>convert.quoted-printable-encode e convert.quoted-printable-decode</title>
+   <simpara>
+    O uso da versão de decodificação desse filtro é equivalente ao processamento de todos os dados
+    da stream pelas funções <function>quoted_printable_decode</function>.
+    Não há nenhuma função equivalente a <literal>convert.quoted-printable-encode</literal>.
+    <literal>convert.quoted-printable-encode</literal> suporta parâmetros passados como
+    um array associativo. Além dos parâmetros suportados por
+    <literal>convert.base64-encode</literal>, <literal>convert.quoted-printable-encode</literal>
+    também suporta os argumentos booleanos <parameter>binary</parameter> e
+    <parameter>force-encode-first</parameter>.
+    <literal>convert.base64-decode</literal> suporta apenas o
+    parâmetro <parameter>line-break-chars</parameter> como uma dica de tipo
+    para retirar do conteúdo codificado.
+   </simpara>
+   <example>
+    <title>
+     convert.quoted-printable-encode &amp;
+     convert.quoted-printable-decode
+    </title>
    <programlisting role="php">
 <![CDATA[
 <?php
@@ -226,6 +235,36 @@
   </example>
  </section>

+  <section xml:id="filters.convert.iconv">
+   <title>convert.iconv.*</title>
+   <simpara>
+    Os filtros <literal>convert.iconv.*</literal> estarão disponíveis se
+    o suporte a <link linkend="book.iconv">iconv</link> estiver habilitado, e se sua utilização é
+    equivalente a processar todos os dados do stream através do <function>iconv</function>.
+    Esses filtros não suportam parâmetros, em vez disso esperam que as codificações
+    de entrada e saída sejam informados no nome do filtro, por exemplo,
+    <literal>convert.iconv.&lt;input-encoding&gt;.&lt;output-encoding&gt;</literal> ou
+    <literal>convert.iconv.&lt;input-encoding&gt;/&lt;output-encoding&gt;</literal>
+    (ambas notações são equivalentes).
+   </simpara>
+
+   <example>
+    <title>convert.iconv.*</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);
+/* Outputs: This is a test. */
+?>
+]]>
+    </programlisting>
+   </example>
+  </section>
+ </section>
+
  <section xml:id="filters.compression">
   <title>Filtros de Compressão</title>

@@ -246,48 +285,50 @@
    </simpara>
   </note>

-  <simpara>
-   <literal>zlib.deflate</literal> (compressão) e
-   <literal>zlib.inflate</literal> (descompressão) são implementações dos
-   métodos de compressão descritos no <link xlink:href="&url.rfc;1951">RFC 1951</link>.
-   O filtro <literal>deflate</literal> recebe até três parâmetros passados como
-   um array associativo.
+  <section xml:id="filters.compression.zlib">
+   <title>zlib.deflate and zlib.inflate</title>
+   <simpara>
+    <literal>zlib.deflate</literal> (compressão) e
+    <literal>zlib.inflate</literal> (descompressão) são implementações dos
+    métodos de compressão descritos no <link xlink:href="&url.rfc;1951">RFC 1951</link>.
+    O filtro <literal>deflate</literal> recebe até três parâmetros passados como
+    um array associativo.

-   <parameter>level</parameter> descreve o nível
-   de compressão a ser usada (1-9).  Números mais altos geralmente resultam em cargas menores com
-   o custo de tempo de processamento adicional. Dois níveis especiais de compressão também existem:
-   0 (para nenhuma compressão), e -1 (padrão interno da zlib -- atualmente 6).
+    <parameter>level</parameter> descreve o nível
+    de compressão a ser usada (1-9).  Números mais altos geralmente resultam em cargas menores com
+    o custo de tempo de processamento adicional. Dois níveis especiais de compressão também existem:
+    0 (para nenhuma compressão), e -1 (padrão interno da zlib -- atualmente 6).

-   <parameter>window</parameter> é o logaritmo na base 2 do tamanho da janela de loopback de compressão.
-   Valores mais altos (até 15 -- 32768 bytes) resultam em melhor compressão ao custo de memória,
-   enquanto valores menores (até 9 -- 512 bytes) resultam em pior compressão usando menos memória.
-   O tamanho padrão de <parameter>window</parameter> atualmente é <constant>15</constant>.
+    <parameter>window</parameter> é o logaritmo na base 2 do tamanho da janela de loopback de compressão.
+    Valores mais altos (até 15 -- 32768 bytes) resultam em melhor compressão ao custo de memória,
+    enquanto valores menores (até 9 -- 512 bytes) resultam em pior compressão usando menos memória.
+    O tamanho padrão de <parameter>window</parameter> atualmente é <constant>15</constant>.

-   <parameter>memory</parameter> é uma escala indicando quanta memória deve ser alocada para trabalhar.
-   Valores válidos vão de 1 (alocação mínima) até 9 (alocação máxima). Essa alocação de memória
-   afeta apenas a velocidade e não tem impacto sobre o tamanho do conteúdo gerado.
-  </simpara>
+    <parameter>memory</parameter> é uma escala indicando quanta memória deve ser alocada para trabalhar.
+    Valores válidos vão de 1 (alocação mínima) até 9 (alocação máxima). Essa alocação de memória
+    afeta apenas a velocidade e não tem impacto sobre o tamanho do conteúdo gerado.
+   </simpara>

-  <note>
+   <note>
+    <simpara>
+     Pelo fato do nível de compressão ser o parâmetro mais usado normalmente, ele pode ser passado
+     de maneira alternativa como um simples valor inteiro (ao invés de um elemento de um array).
+    </simpara>
+   </note>
+
    <simpara>
-    Pelo fato do nível de compressão ser o parâmetro mais usado normalmente, ele pode ser passado
-    de maneira alternativa como um simples valor inteiro (ao invés de um elemento de um array).
-   </simpara>
-  </note>
-
-  <simpara>
     Filtros de compressão zlib.* estão disponíveis com o PHP a partir da versão <literal>5.1.0</literal> se
     o suporte a <link linkend="ref.zlib">zlib</link> estiver ativado. Eles também estão disponíveis como um backport nas versões
     <literal>5.0.x</literal> ao instalar o pacote <link xlink:href="&url.pecl.package;zlib_filter">zlib_filter</link>
     da <link xlink:href="&url.pecl;">PECL</link>.
-  </simpara>
+   </simpara>

-  <example>
-   <title>
-    <literal>zlib.deflate</literal> e
-    <literal>zlib.inflate</literal>
-   </title>
-   <programlisting role="php">
+   <example>
+    <title>
+     <literal>zlib.deflate</literal> e
+     <literal>zlib.inflate</literal>
+    </title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $params = array('level' => 6, 'window' => 15, 'memory' => 9);
@@ -317,14 +358,14 @@
  */
 ?>
 ]]>
-   </programlisting>
-  </example>
+    </programlisting>
+   </example>

-  <example>
-   <title>
-    <literal>zlib.deflate</literal> simples
-   </title>
-   <programlisting role="php">
+   <example>
+    <title>
+     <literal>zlib.deflate</literal> simples
+    </title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $original_text = "Isto é um teste.\nIsto é apenas um teste.\nEsta não é uma string importante.\n";
@@ -346,49 +387,52 @@
  */
 ?>
 ]]>
-   </programlisting>
-  </example>
+    </programlisting>
+   </example>
+  </section>

-  <simpara>
-   <literal>bzip2.compress</literal> e
-   <literal>bzip2.decompress</literal>
-   funcionam da mesma maneira que os filtros da zlib descritos acima.
+  <section xml:id="filters.compression.bzip2">
+   <title>bzip2.compress and bzip2.decompress</title>
+   <simpara>
+    <literal>bzip2.compress</literal> e
+    <literal>bzip2.decompress</literal>
+    funcionam da mesma maneira que os filtros da zlib descritos acima.

-   O filtro <literal>bzip2.compress</literal> aceita até dois parâmetros passados como
-   elementos de um array associativo:
+    O filtro <literal>bzip2.compress</literal> aceita até dois parâmetros passados como
+    elementos de um array associativo:

-   <parameter>blocks</parameter> é um valor inteiro
-   de 1 até 9 especificando o número de blocos de 100kbyte de memória para alocar para
-   o espaço de trabalho.
+    <parameter>blocks</parameter> é um valor inteiro
+    de 1 até 9 especificando o número de blocos de 100kbyte de memória para alocar para
+    o espaço de trabalho.

-   <parameter>work</parameter> também é um valor inteiro variando de
-   0 a 250 indicando quanto esforço será realizado usando o método normal de compressão
-   antes de desistir e usar um mais lento, mas mais confiável. Alterar esse parâmetro
-   afeta apenas a velocidade de compressão. Nem o tamanho da saída comprimida nem o uso de memória
-   são alterados por essa configuração. Um fator de trabalho de 0 diz à biblioteca bzip para usar
-   o padrão interno.
+    <parameter>work</parameter> também é um valor inteiro variando de
+    0 a 250 indicando quanto esforço será realizado usando o método normal de compressão
+    antes de desistir e usar um mais lento, mas mais confiável. Alterar esse parâmetro
+    afeta apenas a velocidade de compressão. Nem o tamanho da saída comprimida nem o uso de memória
+    são alterados por essa configuração. Um fator de trabalho de 0 diz à biblioteca bzip para usar
+    o padrão interno.

-   O filtro <literal>bzip2.decompress</literal> só aceita um parâmetro,
-   que pode ser passado ou como um valor booleano comum ou como o
-   elemento <parameter>small</parameter> de um array associativo.
+    O filtro <literal>bzip2.decompress</literal> só aceita um parâmetro,
+    que pode ser passado ou como um valor booleano comum ou como o
+    elemento <parameter>small</parameter> de um array associativo.

-   <parameter>small</parameter>, quando configurado para o valor &true;, diz à biblioteca bzip
-   para fazer a descompressão usando o mínimo de memória ao custo da velocidade.
-  </simpara>
+    <parameter>small</parameter>, quando configurado para o valor &true;, diz à biblioteca bzip
+    para fazer a descompressão usando o mínimo de memória ao custo da velocidade.
+   </simpara>

-  <simpara>
+   <simpara>
     Filtros de compressão bzip2.* estão disponíveis no PHP a partir da versão <literal>5.1.0</literal> se
     o suporte a <link linkend="ref.bzip2">bz2</link> estiver ativado. Eles também estão disponíveis como um backport nas versões
     <literal>5.0.x</literal> instalando o pacote <link xlink:href="&url.pecl.package;bz2_filter">bz2_filter</link>
     da <link xlink:href="&url.pecl;">PECL</link>.
-  </simpara>
+   </simpara>

-  <example>
-   <title>
-    <literal>bzip2.compress</literal> e
-    <literal>bzip2.decompress</literal>
-   </title>
-   <programlisting role="php">
+   <example>
+    <title>
+     <literal>bzip2.compress</literal> e
+     <literal>bzip2.decompress</literal>
+    </title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 $param = array('blocks' => 9, 'work' => 0);
@@ -410,9 +454,10 @@
  */
 ?>
 ]]>
-   </programlisting>
-  </example>
- </section>
+    </programlisting>
+   </example>
+  </section>
+  </section>

  <section xml:id="filters.encryption">
   <title>Filtros de Criptografia</title>
@@ -425,68 +470,74 @@
     Os filtros de criptografia são especialmente úteis para criptografia de arquivo/stream.
   </para>

-  <simpara>
-   Os filtros <literal>mcrypt.*</literal> e <literal>mdecrypt.*</literal>
-   fornecem criptografia e descriptografia simétricas usando libmcrypt.
-   Ambos os conjuntos de filtros suportam os mesmos algoritmos disponíveis na
-   <link linkend="ref.mcrypt">extensão mcrypt</link> na forma de
-   <literal>mcrypt.ciphername</literal> onde <parameter>ciphername</parameter>
-   é o nome da cifra como seria passado para
-   <function>mcrypt_module_open</function>.
-   Os cinco parâmetros de filtros a seguir também estão disponíveis:
-  </simpara>
+  <section xml:id="filters.encryption.mcrypt">
+   <title>mcrypt.* and mdecrypt.*</title>
+   <para>
+     &warn.deprecated.feature-7-1-0;
+   </para>

-  <para>
-   <table>
-    <title>Parâmetros para os filtros mcrypt</title>
-    <tgroup cols="4">
-     <thead>
-      <row>
-       <entry>Parâmetro</entry>
-       <entry>Obrigatório?</entry>
-       <entry>Valor Padrão</entry>
-       <entry>Exemplos de Valores</entry>
-      </row>
-     </thead>
-     <tbody>
-      <row>
-       <entry>mode</entry>
-       <entry>Opcional</entry>
-       <entry>cbc</entry>
-       <entry>cbc, cfb, ecb, nofb, ofb, stream</entry>
-      </row>
-      <row>
-       <entry>algorithms_dir</entry>
-       <entry>Opcional</entry>
-       <entry>ini_get('mcrypt.algorithms_dir')</entry>
-       <entry>Localização dos módulos de algoritmos</entry>
-      </row>
-      <row>
-       <entry>modes_dir</entry>
-       <entry>Opcional</entry>
-       <entry>ini_get('mcrypt.modes_dir')</entry>
-       <entry>Localização dos módulos de modos</entry>
-      </row>
-      <row>
-       <entry>iv</entry>
-       <entry>Obrigatório</entry>
-       <entry>N/A</entry>
-       <entry>Tipicamente 8, 16 ou 32 bytes de dados binários. Depende da cifra.</entry>
-      </row>
-      <row>
-       <entry>key</entry>
-       <entry>Obrigatório</entry>
-       <entry>N/A</entry>
-       <entry>Tipicamente 8, 16 ou 32 bytes de dados binários. Depende da cifra.</entry>
-      </row>
-     </tbody>
-    </tgroup>
-   </table>
-  </para>
+   <simpara>
+    Os filtros <literal>mcrypt.*</literal> e <literal>mdecrypt.*</literal>
+    fornecem criptografia e descriptografia simétricas usando libmcrypt.
+    Ambos os conjuntos de filtros suportam os mesmos algoritmos disponíveis na
+    <link linkend="ref.mcrypt">extensão mcrypt</link> na forma de
+    <literal>mcrypt.ciphername</literal> onde <parameter>ciphername</parameter>
+    é o nome da cifra como seria passado para
+    <function>mcrypt_module_open</function>.
+    Os cinco parâmetros de filtros a seguir também estão disponíveis:
+   </simpara>

-  <example>
-   <title>Criptografar/Descriptografar com Blowfish</title>
-   <programlisting role="php">
+   <para>
+    <table>
+     <title>Parâmetros para os filtros mcrypt</title>
+     <tgroup cols="4">
+      <thead>
+       <row>
+        <entry>Parâmetro</entry>
+        <entry>Obrigatório?</entry>
+        <entry>Valor Padrão</entry>
+        <entry>Exemplos de Valores</entry>
+       </row>
+      </thead>
+      <tbody>
+       <row>
+        <entry>mode</entry>
+        <entry>Opcional</entry>
+        <entry>cbc</entry>
+        <entry>cbc, cfb, ecb, nofb, ofb, stream</entry>
+       </row>
+       <row>
+        <entry>algorithms_dir</entry>
+        <entry>Opcional</entry>
+        <entry>ini_get('mcrypt.algorithms_dir')</entry>
+        <entry>Localização dos módulos de algoritmos</entry>
+       </row>
+       <row>
+        <entry>modes_dir</entry>
+        <entry>Opcional</entry>
+        <entry>ini_get('mcrypt.modes_dir')</entry>
+        <entry>Localização dos módulos de modos</entry>
+       </row>
+       <row>
+        <entry>iv</entry>
+        <entry>Obrigatório</entry>
+        <entry>N/A</entry>
+        <entry>Tipicamente 8, 16 ou 32 bytes de dados binários. Depende da cifra.</entry>
+       </row>
+       <row>
+        <entry>key</entry>
+        <entry>Obrigatório</entry>
+        <entry>N/A</entry>
+        <entry>Tipicamente 8, 16 ou 32 bytes de dados binários. Depende da cifra.</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+   </para>
+
+   <example>
+    <title>Criptografar/Descriptografar com Blowfish</title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 // assume-se que $key foi gerada anteriormente
@@ -509,11 +560,11 @@
 echo $data;
 ?>
 ]]>
-   </programlisting>
-  </example>
-  <example>
-   <title>Criptografar arquivo usando CBC AES-128 com HMAC SHA256 no PHP 5.5+</title>
-   <programlisting role="php">
+    </programlisting>
+   </example>
+   <example>
+    <title>Criptografar arquivo usando CBC AES-128 com HMAC SHA256 no PHP 5.5+</title>
+    <programlisting role="php">
 <![CDATA[
 <?php
 AES_CBC::encryptFile($password, "plaintext.txt", "encrypted.enc");
@@ -521,109 +572,110 @@

 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']; } // padrão 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, HMAC SHA256 será usado aqui mais tarde
-      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);
+   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']; } // padrão 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, HMAC SHA256 será usado aqui mais tarde
+         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);
       }
-      $block_size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
-      $padding = $block_size - ($infilesize % $block_size); // $padding é um número de 1-16
-      fwrite($fc, str_repeat(chr($padding), $padding) ); // realiza o padding PKCS7
-      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); // sobrescreve o 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); // ignora HMAC SHA256 e 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 padding PKCS7
-          $block = substr($block, 0, 0-$padding);
-        }
-        fwrite($fout, $block);
+   }
+   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);
       }
-      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);
-  }
+   }
+   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;
+   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);
       }
-      $consumed += $outlen;
-      stream_bucket_append($out, $bucket);
-    }
-    return PSFS_PASS_ON;
-  }
+      return PSFS_PASS_ON;
+   }
 }
 class AES_128_CBC extends AES_CBC {
-  protected static function key_size() { return self::$KEY_SIZES['AES-128']; }
+   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']; }
+   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']; }
+   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.