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";
?>

相关文章

  • php实现生成code128条形码的方法详解

    php实现生成code128条形码的方法详解

    这篇文章主要介绍了php实现生成code128条形码的方法,结合完整实例形式给出了php条形码生成类的定义与使用方法,需要的朋友可以参考下
    2017-07-07
  • 深入php多态的实现详解

    深入php多态的实现详解

    本篇文章是对php多态的实现进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php+ajax实时刷新简单实例

    php+ajax实时刷新简单实例

    这篇文章主要介绍了php+ajax实时刷新简单实现方法,实例分析了Ajax的实现原理以及对应的php处理文件基本原理与操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • php一句话cmdshell新型 (非一句话木马)

    php一句话cmdshell新型 (非一句话木马)

    php运行时如果遇见字符``(键盘上~符号的下档键)总会尝试着执行``里面包含的命令,并返回命令执行的结果(string类型);
    2009-04-04
  • php常用正则函数实例小结

    php常用正则函数实例小结

    这篇文章主要介绍了php常用正则函数,结合实例形式总结分析了php正则表达式常用函数,包括preg_replace、preg_match及preg_match_all函数的功能、使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • php编写的抽奖程序中奖概率算法

    php编写的抽奖程序中奖概率算法

    本文给大家分享的是php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法。用法很简单,代码里有详细注释说明,一看就懂,有需要的小伙伴参考下吧。
    2015-05-05
  • PHP 使用openssl 扩展实现公钥加密的方法

    PHP 使用openssl 扩展实现公钥加密的方法

    下面小编就为大家分享一篇PHP 使用openssl 扩展实现公钥加密的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • PHP简单实现断点续传下载的方法

    PHP简单实现断点续传下载的方法

    这篇文章主要介绍了PHP实现断点续传下载的方法,涉及php针对文件传输的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • PHP操作数组相关函数

    PHP操作数组相关函数

    PHP数组是一个重要的概念,它包含有大量的函数,方便人们的开发…现将它的数组分类,以方便查询及应用.
    2011-02-02
  • php抽象方法和抽象类实例分析

    php抽象方法和抽象类实例分析

    这篇文章主要介绍了php抽象方法和抽象类,结合实例形式分析了php抽象方法和抽象类的概念、功能、定义与使用方法,需要的朋友可以参考下
    2016-12-12

最新评论