mirror of
https://github.com/php/doc-zh.git
synced 2026-03-24 15:12:20 +01:00
178 lines
5.7 KiB
XML
178 lines
5.7 KiB
XML
<?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
|
||
-->
|