Heim >Backend-Entwicklung >PHP-Tutorial >mcrypt 如何加/解密 ?_PHP

mcrypt 如何加/解密 ?_PHP

WBOY
WBOYOriginal
2016-06-01 12:34:09969Durchsuche
查看 Phpinfo() 页面,看看你的 libmcrypt 是哪个版本的,如果 2.4.0 以上就不能使用你的那种方法。

而且 libmcrypt 的支持的加密算法,所依赖的 libmcrypt 的版本也是不一样的。

下面的是 2.4.0+ 的加解密的方法~

也是手册中的例子

<font size="2"><font face="Verdana">PHP代码:</font><hr></font><code><font color="#000000">
<font color="#0000bb"><br></font><font color="#007700">function </font><font color="#0000bb">make_seed</font><font color="#007700">() {
<br>    list(</font><font color="#0000bb">$usec</font><font color="#007700">, </font><font color="#0000bb">$sec</font><font color="#007700">) = </font><font color="#0000bb">explode</font><font color="#007700">(</font><font color="#dd0000">' '</font><font color="#007700">, </font><font color="#0000bb">microtime</font><font color="#007700">());
<br>    return(float) </font><font color="#0000bb">$sec </font><font color="#007700">+((float) </font><font color="#0000bb">$usec </font><font color="#007700">* </font><font color="#0000bb">100000</font><font color="#007700">);
<br>}
<br></font><font color="#0000bb">srand</font><font color="#007700">(</font><font color="#0000bb">make_seed</font><font color="#007700">());
<br>
<br></font><font color="#ff8000">/* 开启加密算法/ */
<br></font><font color="#0000bb">$td </font><font color="#007700">= </font><font color="#0000bb">mcrypt_module_open</font><font color="#007700">(</font><font color="#dd0000">'twofish'</font><font color="#007700">, </font><font color="#dd0000">''</font><font color="#007700">, </font><font color="#dd0000">'ecb'</font><font color="#007700">, </font><font color="#dd0000">''</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 建立 IV,并检测 key 的长度 */
<br></font><font color="#0000bb">$iv </font><font color="#007700">= </font><font color="#0000bb">mcrypt_create_iv</font><font color="#007700">(</font><font color="#0000bb">mcrypt_enc_get_iv_size</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">), </font><font color="#0000bb">MCRYPT_RAND</font><font color="#007700">);
<br></font><font color="#0000bb">$ks </font><font color="#007700">= </font><font color="#0000bb">mcrypt_enc_get_key_size</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 生成 key */
<br></font><font color="#0000bb">$key </font><font color="#007700">= </font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">md5</font><font color="#007700">(</font><font color="#dd0000">'very secret key'</font><font color="#007700">), </font><font color="#0000bb">0</font><font color="#007700">, </font><font color="#0000bb">$ks</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 初始化加密程序 */
<br></font><font color="#0000bb">mcrypt_generic_init</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">, </font><font color="#0000bb">$key</font><font color="#007700">, </font><font color="#0000bb">$iv</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 加密, $encrypted 保存的是已经加密后的数据 */
<br></font><font color="#007700">print </font><font color="#0000bb">$encrypted </font><font color="#007700">= </font><font color="#0000bb">mcrypt_generic</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">, </font><font color="#dd0000">'This is very important data'</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 检测加密句柄 */
<br></font><font color="#0000bb">mcrypt_generic_deinit</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 初始化加密模块,用以解密 */
<br></font><font color="#0000bb">mcrypt_generic_init</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">, </font><font color="#0000bb">$key</font><font color="#007700">, </font><font color="#0000bb">$iv</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 解密 */
<br></font><font color="#0000bb">$decrypted </font><font color="#007700">= </font><font color="#0000bb">mdecrypt_generic</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">, </font><font color="#0000bb">$encrypted</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 检测解密句柄,并关闭模块 */
<br></font><font color="#0000bb">mcrypt_generic_deinit</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">);
<br></font><font color="#0000bb">mcrypt_module_close</font><font color="#007700">(</font><font color="#0000bb">$td</font><font color="#007700">);
<br>
<br></font><font color="#ff8000">/* 显示原始字符串 */
<br></font><font color="#007700">echo </font><font color="#0000bb">trim</font><font color="#007700">(</font><font color="#0000bb">$decrypted</font><font color="#007700">).</font><font color="#dd0000">"\n"</font><font color="#007700">;<br></font><font color="#0000bb"></font>
</font>
</code><hr>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn