有些应用需要双向的加密处理,以前一直自己写算法去实现,效果都不是很理想,原来PHP本身就内置一组功能强大的可逆的加密方法(Mcrypt Encryption Functions),下面记录一下,以备后用
1)安装
在windows下安装,只需要在php.ini加入php_mcrypt.dll扩展(可能需要将php安装目录下的libmcrypt.dll拷至system32目录)
linux下,需先安装mcrypt(在http://mcrypt.sourceforge.net/ 下载),编译时要--disable-posix-threads,
然后在编译php时加入--with-mcrypt
2)例子
以下是代码片段:
- <?php
- $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
-
-
- $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
- $ks = mcrypt_enc_get_key_size($td);
-
- $key = "ery secret key";
- $key = substr(md5($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";
- ?>
|