1
0
mirror of https://github.com/php/doc-zh.git synced 2026-03-24 15:12:20 +01:00
Files
archived-doc-zh/reference/mcrypt/functions/mcrypt-module-open.xml
2026-01-19 03:24:41 +00:00

178 lines
5.7 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e849a6c4225bd992474793ec6983df7898cae0be Maintainer: yuanyuqiang Status: ready -->
<!-- CREDITS: mowangjuanzi, Luffy -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.mcrypt-module-open">
<refnamediv>
<refname>mcrypt_module_open</refname>
<refpurpose>打开算法和模式对应的模块</refpurpose>
</refnamediv>
<refsynopsisdiv>
&warn.deprecated.function-7-1-0.removed-7-2-0;
</refsynopsisdiv>
<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>
<simpara>
本函数打开指定算法和模式对应的模块。
算法名称可以是字符串,例如 <literal>"twofish"</literal>
也可以是 <constant>MCRYPT_ciphername</constant> 常量。
调用 <function>mcrypt_module_close</function> 函数可以关闭模块。
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>algorithm</parameter></term>
<listitem>
&mcrypt.parameter.cipher;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>algorithm_directory</parameter></term>
<listitem>
<simpara>
<parameter>algorithm_directory</parameter> 参数指示加密模块的位置。
如果你提供此参数,则使用你指定的值。
如果将此参数设置为空字符串(<literal>""</literal>),将使用
&php.ini; 中的 <literal>mcrypt.algorithms_dir</literal>
如果不指定此参数,则使用 libmcrypt 的编译路径
(通常是 <filename>/usr/local/lib/libmcrypt</filename>)。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
&mcrypt.parameter.mode;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode_directory</parameter></term>
<listitem>
<simpara>
<parameter>algorithm_directory</parameter> 参数指示加密模式的位置。
如果你提供此参数,则使用你指定的值。
如果将此参数设置为空字符串(<literal>""</literal>),将使用
&php.ini; 中的 <literal>mcrypt.modes_dir</literal>
如果不指定此参数,则使用 libmcrypt 的编译路径
(通常是 <filename>/usr/local/lib/libmcrypt</filename>)。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
成功则返回加密描述符,如果发生错误则返回 &false;
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title><function>mcrypt_module_open</function> 示例</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>
<simpara>
示例中的第一行从默认目录打开 <literal>DES</literal> 加密算法,
<filename>/usr/lib/mcrypt-modes</filename> 目录打开
<literal>ECB</literal> 模式。
第二个示例中,使用字符串形式表示算法和模式,
这种形式仅适用于 libmcrypt 2.4.x 或 2.5.x 版本。
</simpara>
<example>
<title>在加密中使用 <function>mcrypt_module_open</function></title>
<programlisting role="php">
<![CDATA[
<?php
/* 打开加密算法和模式 */
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
/* 创建初始向量,并且检测密钥长度。
* Windows 平台请使用 MCRYPT_RAND。 */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);
/* 创建密钥 (此处仅为示例MD5 不是一个好的哈希算法) */
$key = substr(hash('md5', 'very secret key'), 0, $ks);
/* 初始化加密 */
mcrypt_generic_init($td, $key, $iv);
/* 加密数据 */
$encrypted = mcrypt_generic($td, 'This is very important data');
/* 结束加密,执行清理工作 */
mcrypt_generic_deinit($td);
/* 初始化解密模块 */
mcrypt_generic_init($td, $key, $iv);
/* 解密数据 */
$decrypted = mdecrypt_generic($td, $encrypted);
/* 结束解密,执行清理工作,并且关闭模块 */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
/* 显示文本 */
echo trim($decrypted) . "\n";
?>
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<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>
</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
-->