<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xml:id="function.mcrypt-module-open" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>mcrypt_module_open</refname> <refpurpose>Opens the module of the algorithm and the mode to be used</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>resource</type><methodname>mcrypt_module_open</methodname> <methodparam><type>string</type><parameter>algorithm</parameter></methodparam> <methodparam><type>string</type><parameter>algorithm_directory</parameter></methodparam> <methodparam><type>string</type><parameter>mode</parameter></methodparam> <methodparam><type>string</type><parameter>mode_directory</parameter></methodparam> </methodsynopsis> <para> This function opens the module of the algorithm and the mode to be used. The name of the algorithm is specified in algorithm, e.g. <literal>"twofish"</literal> or is one of the <constant>MCRYPT_ciphername</constant> constants. The module is closed by calling <function>mcrypt_module_close</function>. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>algorithm</parameter></term> <listitem> &mcrypt.parameter.cipher; </listitem> </varlistentry> <varlistentry> <term><parameter>algorithm_directory</parameter></term> <listitem> <para> The <parameter>algorithm_directory</parameter> parameter is used to locate the encryption module. When you supply a directory name, it is used. When you set it to an empty string (<literal>""</literal>), the value set by the <literal>mcrypt.algorithms_dir</literal> &php.ini; directive is used. When it is not set, the default directory that is used is the one that was compiled into libmcrypt (usually <filename>/usr/local/lib/libmcrypt</filename>). </para> </listitem> </varlistentry> <varlistentry> <term><parameter>mode</parameter></term> <listitem> &mcrypt.parameter.mode; </listitem> </varlistentry> <varlistentry> <term><parameter>mode_directory</parameter></term> <listitem> <para> The <parameter>mode_directory</parameter> parameter is used to locate the encryption module. When you supply a directory name, it is used. When you set it to an empty string (<literal>""</literal>), the value set by the <literal>mcrypt.modes_dir</literal> &php.ini; directive is used. When it is not set, the default directory that is used is the one that was compiled-in into libmcrypt (usually <filename>/usr/local/lib/libmcrypt</filename>). </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> Normally it returns an encryption descriptor, or &false; on error. </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>mcrypt_module_open</function> Examples</title> <programlisting role="php"> <![CDATA[ <?php $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes'); $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); ?> ]]> </programlisting> </example> </para> <para> The first line in the example above will try to open the <literal>DES</literal> cipher from the default directory and the <literal>ECB</literal> mode from the directory <filename>/usr/lib/mcrypt-modes</filename>. The second example uses strings as name for the cipher and mode, this only works when the extension is linked against libmcrypt 2.4.x or 2.5.x. </para> <para> <example> <title>Using <function>mcrypt_module_open</function> in encryption</title> <programlisting role="php"> <![CDATA[ <?php /* Open the cipher */ $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* Create the IV and determine the keysize length, use MCRYPT_RAND * on Windows instead */ $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM); $ks = mcrypt_enc_get_key_size($td); /* Create key */ $key = substr(md5('very secret key'), 0, $ks); /* Intialize encryption */ mcrypt_generic_init($td, $key, $iv); /* Encrypt data */ $encrypted = mcrypt_generic($td, 'This is very important data'); /* Terminate encryption handler */ mcrypt_generic_deinit($td); /* Initialize encryption module for decryption */ mcrypt_generic_init($td, $key, $iv); /* Decrypt encrypted string */ $decrypted = mdecrypt_generic($td, $encrypted); /* Terminate decryption handle and close module */ mcrypt_generic_deinit($td); mcrypt_module_close($td); /* Show string */ echo trim($decrypted) . "\n"; ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>mcrypt_module_close</function></member> <member><function>mcrypt_generic</function></member> <member><function>mdecrypt_generic</function></member> <member><function>mcrypt_generic_init</function></member> <member><function>mcrypt_generic_deinit</function></member> </simplelist> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"~/.phpdoc/manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->