PHP mcrypt可逆加密算法分析

 更新时间:2011年07月19日 23:01:30   作者:  
PHP使用mcrypt拓展的加密算法进行加密解密,学习php的朋友可以参考下。
数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据。对于不需要还原为原始数据的信息我们可以使用MD5、sha1等不可逆加密算法对数据进行加密处理,但对于交易信息等需要还原为原始数据的重要信息则必须使用可还原的加密算法进行加密了。当然你可以自己写一个可逆加密的算法进行加密和解密计算。本文中我们介绍的是使用 mcrypt模块进行加密解密操作。
Mcrypt的优点不仅仅在于其提供的加密算法较多,在windows下随PHP包一起发布,还在于它可以对数据进行加/解密处理,此外,它还提供了包括DES算法在内的35种处理数据用的函数。
复制代码 代码如下:

/**
+-----------------------------------------------------
* Mcrypt 加密/解密
* @param String $date 要加密和解密的数据
* @param String $mode encode 默认为加密/decode 为解密
* @return String
* @author zxing@97md.net Mon Sep 14 22:59:28 CST 2009
+-----------------------------------------------------
* @example
*/
function ZxingCrypt($date,$mode = 'encode'){
$key = md5('zxing');//用MD5哈希生成一个密钥,注意加密和解密的密钥必须统一
if ($mode == 'decode'){
$date = base64_decode($date);
}
if (function_exists('mcrypt_create_iv')){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
}
if (isset($iv) && $mode == 'encode'){
$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv);
}elseif (isset($iv) && $mode == 'decode'){
$passcrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv);
}
if ($mode == 'encode'){
$passcrypt = base64_encode($passcrypt);
}
return $passcrypt;
}

别的网友的代码
复制代码 代码如下:

<?php
$td = mcrypt_module_open(MCRYPT_DES,'','ecb',''); //使用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);
//解密后,可能会有后续的\0,需去掉
echo trim($decrypted) . "\n";
?>

相关文章

  • 10个php函数实用却不常见

    10个php函数实用却不常见

    函数是PHP如此强大的源泉,但是很多PHP函数并没有得到充分的利用。这里,我们给大家简单介绍10个不常见,但非常有用的函数。
    2015-10-10
  • php数组函数序列之array_keys() - 获取数组键名

    php数组函数序列之array_keys() - 获取数组键名

    array_keys() 函数返回包含数组中所有键名的一个新数组。如果提供了第二个参数,则只返回键值为该值的键名
    2011-10-10
  • PHP实现微信扫码登录功能的两种方式总结

    PHP实现微信扫码登录功能的两种方式总结

    这篇文章主要为大家介绍了利用PHP实现微信扫码登录功能的两种方式,文中的示例代码讲解详细,对我们学习有一定借鉴价值,需要的可以参考一下
    2022-08-08
  • 浅析十款PHP开发框架的对比

    浅析十款PHP开发框架的对比

    本文将引导你遍览十款最热门最流行的开发框架,并对它们作出横向比对。我会先列出一张所有框架的一览表,而后我们将对它们逐个简述
    2013-07-07
  • 通过table标签,PHP输出EXCEL的实现方法

    通过table标签,PHP输出EXCEL的实现方法

    以下是利用table标签,对PHP输出EXCEL的实现代码进行了介绍,需要的朋友可以过来参考下
    2013-07-07
  • 修改php.ini不生效问题解决方法(上传大于8M的文件)

    修改php.ini不生效问题解决方法(上传大于8M的文件)

    上传大于8M的文件需要修改php的配置才可以生效,搜索好多的参考资料,结果修改还是没有生效,经过一番折腾终于找到了解决方法,下面与大家分享了
    2013-06-06
  • PHP5.5迭代生成器用法实例详解

    PHP5.5迭代生成器用法实例详解

    这篇文章主要介绍了PHP5.5迭代生成器用法,结合实例形式详细分析了PHP5.5迭代生成器的功能,定义及相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • PHP 防注入函数(格式化数据)

    PHP 防注入函数(格式化数据)

    下面的函数通过格式化数据的方法实现数据的addslashes,不过也建议大家参考下discuz的防注入函数。
    2011-08-08
  • php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法

    php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法

    这篇文章主要介绍了php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法,结合实例形式分析了mcrypt_encrypt和mcrypt_decrypt函数进行加密、解密的相关使用技巧,需要的朋友可以参考下
    2016-07-07
  • ThinkPHP路由详解

    ThinkPHP路由详解

    ThinkPHP路由通俗的说,他是一个url的传输规则,例如:index.php?g=Home&m=Index&a=price 这个规则也是可以变化的,& 可以设置为@或者其他,规则主要有pathinfo等,在设置伪静态的时候也用的着他
    2015-07-07

最新评论