centos安装php扩展mcrypt

来源:互联网 发布:coc狗升级数据 编辑:程序博客网 时间:2024/05/16 11:23
由于参与的app项目,一些敏感数据在android和ios交互中明文传输风险很大
所以使用对称加密算法aes,这种算法android、ios都有很好的支持,当然使用https也是个选择
参考:http://blog.csdn.net/huangwenkui1990/article/details/48292865

1、确认linux有没有安装mcrypt库
# yum list installed|grep mcrypt
libmcrypt.x86_64                          2.5.8-4.el5.centos           installed
libmcrypt-devel.x86_64                    2.5.8-4.el5.centos           installed
mcrypt.x86_64                             2.6.8-1.el5                  installed
以上显示已经安装过,若没有,则执行下面命令进行安装
# yum install libmcrypt libmcrypt-devel mcrypt mhash

执行后会显示即将安装的相关库,你可以根据你的linux限定x86_64或者i386,如yum install libmcrypt.x86_64(如果yum命令无法连接仓库,请检查你的/etc/yum.repos.d/里的文件正确性,以及你的/etc/host是不是可达里面的域名)


2、下载php下的mcrypt扩展或者直接下载php的完整安装包
http://cn.php.net/releases/ 网页下找到自己服务器的php版本,下载后tar解压(本人的是5.4.43),进入ext/mcrypt文件夹


# cd ext/mcrypt/
# phpize
# ./configure
# make  && make install 


3、php加载mcrypt扩展

extension_dir = "/usr/lib64/php/modules/"
extension=mcrypt.so

保存退出,重启服务

service php-fpm restart
service nginx restart



4、测试,查看phpinfo信息,如下图所示:




5、代码测试
<?php
class AMPCrypt {
    private static function getKey(){
        return md5('exampleKey');
     }
    public static function encrypt($value){
         $td = mcrypt_module_open('tripledes', '', 'ecb', '');
         $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
         $key = substr(self::getKey(), 0, mcrypt_enc_get_key_size($td));
         mcrypt_generic_init($td, $key, $iv);
         $ret = base64_encode(mcrypt_generic($td, $value));
         mcrypt_generic_deinit($td);
         mcrypt_module_close($td);
        return $ret;
     }
    public static function dencrypt($value){
         $td = mcrypt_module_open('tripledes', '', 'ecb', '');
         $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
         $key = substr(self::getKey(), 0, mcrypt_enc_get_key_size($td));
         $key = substr(self::getKey(), 0, mcrypt_enc_get_key_size($td));
         mcrypt_generic_init($td, $key, $iv);
         $ret = trim(mdecrypt_generic($td, base64_decode($value))) ;
         mcrypt_generic_deinit($td);
         mcrypt_module_close($td);
        return $ret;
     }
}


$mcrypt=new AMPCrypt();
echo $mcrypt->encrypt('test');//wFJisbvfzKs=
?>
0 0