Heim >Backend-Entwicklung >PHP-Tutorial >mcrypt 如何加/解密 ?_PHP
<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>