uTools-Manuals/docs/php/mcrypt_module_open.html
2019-04-28 19:00:34 +08:00

161 lines
13 KiB
HTML
Raw 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.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>打开算法和模式对应的模块</title>
</head>
<body class="docs"><div id="layout">
<div id="layout-content"><div id="function.mcrypt-module-open" class="refentry">
<div class="refnamediv">
<h1 class="refname">mcrypt_module_open</h1>
<p class="verinfo">(PHP 4 &gt;= 4.0.2, PHP 5, PHP 7 &lt; 7.2.0, PECL mcrypt &gt;= 1.0.0)</p><p class="refpurpose"><span class="refname">mcrypt_module_open</span> &mdash; <span class="dc-title">打开算法和模式对应的模块</span></p>
</div>
<div id="function.mcrypt-module-open-refsynopsisdiv">
<div class="warning"><strong class="warning">Warning</strong><p class="simpara">This function has been
<em class="emphasis">DEPRECATED</em> as of PHP 7.1.0. Relying on this function
is highly discouraged.</p></div>
</div>
<div class="refsect1 description" id="refsect1-function.mcrypt-module-open-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<span class="methodname"><strong>mcrypt_module_open</strong></span>
( <span class="methodparam"><span class="type">string</span> <code class="parameter">$algorithm</code></span>
, <span class="methodparam"><span class="type">string</span> <code class="parameter">$algorithm_directory</code></span>
, <span class="methodparam"><span class="type">string</span> <code class="parameter">$mode</code></span>
, <span class="methodparam"><span class="type">string</span> <code class="parameter">$mode_directory</code></span>
) : <span class="type">resource</span></div>
<p class="para rdfs-comment">
本函数打开指定算法和模式对应的模块。
算法名称可以是字符串,例如 <em>&quot;twofish&quot;</em>
也可以是 <strong><code>MCRYPT_ciphername</code></strong> 常量。
调用 <span class="function"><a href="mcrypt_module_close.html" class="function">mcrypt_module_close()</a></span> 函数可以关闭模块。
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.mcrypt-module-open-parameters">
<h3 class="title">参数</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">algorithm</code></dt>
<dd>
<p class="para"><strong><code>MCRYPT_ciphername</code></strong> 常量中的一个,或者是字符串值的算法名称。</p>
</dd>
<dt>
<code class="parameter">algorithm_directory</code></dt>
<dd>
<p class="para">
<code class="parameter">algorithm_directory</code> 参数指示加密模块的位置。
如果你提供此参数,则使用你指定的值。
如果将此参数设置为空字符串(<em>&quot;&quot;</em>),将使用
<var class="filename">php.ini</var> 中的 <em>mcrypt.algorithms_dir</em>
如果不指定此参数,则使用 libmcrypt 的编译路径
(通常是 <var class="filename">/usr/local/lib/libmcrypt</var>)。
</p>
</dd>
<dt>
<code class="parameter">mode</code></dt>
<dd>
<p class="para"><strong><code>MCRYPT_MODE_modename</code></strong> 常量中的一个,或以下字符串中的一个:&quot;ecb&quot;&quot;cbc&quot;&quot;cfb&quot;&quot;ofb&quot;&quot;nofb&quot;&quot;stream&quot;</p>
</dd>
<dt>
<code class="parameter">mode_directory</code></dt>
<dd>
<p class="para">
<code class="parameter">algorithm_directory</code> 参数指示加密模式的位置。
如果你提供此参数,则使用你指定的值。
如果将此参数设置为空字符串(<em>&quot;&quot;</em>),将使用
<var class="filename">php.ini</var> 中的 <em>mcrypt.modes_dir</em>
如果不指定此参数,则使用 libmcrypt 的编译路径
(通常是 <var class="filename">/usr/local/lib/libmcrypt</var>)。
</p>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.mcrypt-module-open-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
成功则返回加密描述符,如果发生错误则返回 <strong><code>FALSE</code></strong>
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.mcrypt-module-open-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="function.hash.tiger-bc">
<p><strong>Example #1 <span class="function"><strong>mcrypt_module_open()</strong></span> 例程</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;$td&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mcrypt_module_open</span><span style="color: #007700">(</span><span style="color: #0000BB">MCRYPT_DES</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">MCRYPT_MODE_ECB</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'/usr/lib/mcrypt-modes'</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$td&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mcrypt_module_open</span><span style="color: #007700">(</span><span style="color: #DD0000">'rijndael-256'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'ofb'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
<p class="para">
例程中的第一行从默认目录打开 <em>DES</em> 加密算法,
<var class="filename">/usr/lib/mcrypt-modes</var> 目录打开
<em>ECB</em> 模式。
第二个示例中,使用字符串形式表示算法和模式,
这种形式仅适用于 libmcrypt 2.4.x 或 2.5.x 版本。
</p>
<p class="para">
<div class="example" id="example-915">
<p><strong>Example #2 在加密中使用 <span class="function"><strong>mcrypt_module_open()</strong></span></strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;打开加密算法和模式&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$td&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mcrypt_module_open</span><span style="color: #007700">(</span><span style="color: #DD0000">'rijndael-256'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'ofb'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;创建初始向量,并且检测密钥长度。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Windows&nbsp;平台请使用&nbsp;MCRYPT_RAND。&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$iv&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mcrypt_create_iv</span><span style="color: #007700">(</span><span style="color: #0000BB">mcrypt_enc_get_iv_size</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">MCRYPT_DEV_RANDOM</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ks&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mcrypt_enc_get_key_size</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;创建密钥&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">md5</span><span style="color: #007700">(</span><span style="color: #DD0000">'very&nbsp;secret&nbsp;key'</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$ks</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;初始化加密&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mcrypt_generic_init</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$key</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$iv</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;加密数据&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$encrypted&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mcrypt_generic</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'This&nbsp;is&nbsp;very&nbsp;important&nbsp;data'</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;结束加密,执行清理工作&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mcrypt_generic_deinit</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;初始化解密模块&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mcrypt_generic_init</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$key</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$iv</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;解密数据&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$decrypted&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mdecrypt_generic</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$encrypted</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;结束解密,执行清理工作,并且关闭模块&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mcrypt_generic_deinit</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mcrypt_module_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$td</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;显示文本&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">trim</span><span style="color: #007700">(</span><span style="color: #0000BB">$decrypted</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
</div>
<div class="refsect1 seealso" id="refsect1-function.mcrypt-module-open-seealso">
<h3 class="title">参见</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="mcrypt_module_close.html" class="function" rel="rdfs-seeAlso">mcrypt_module_close()</a> - 关闭加密模块</span></li>
<li class="member"><span class="function"><a href="mcrypt_generic.html" class="function" rel="rdfs-seeAlso">mcrypt_generic()</a> - 加密数据</span></li>
<li class="member"><span class="function"><a href="mdecrypt_generic.html" class="function" rel="rdfs-seeAlso">mdecrypt_generic()</a> - 解密数据</span></li>
<li class="member"><span class="function"><a href="mcrypt_generic_init.html" class="function" rel="rdfs-seeAlso">mcrypt_generic_init()</a> - 初始化加密所需的缓冲区</span></li>
<li class="member"><span class="function"><a href="mcrypt_generic_deinit.html" class="function" rel="rdfs-seeAlso">mcrypt_generic_deinit()</a> - 对加密模块进行清理工作</span></li>
</ul>
</p>
</div>
</div></div></div></body></html>