PHP mcrypt可逆加密算法分析

数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据。对于不需要还原为原始数据的信息我们可以使用MD5、sha1等不可逆加密算法对数据进行加密处理,但对于交易信息等需要还原为原始数据的重要信息则必须使用可还原的加密算法进行加密了。当然你可以自己写一个可逆加密的算法进行加密和解密计算。本文中我们介绍的是使用 mcrypt模块进行加密解密操作。
Mcrypt的优点不仅仅在于其提供的加密算法较多,在windows下随PHP包一起发布,还在于它可以对数据进行加/解密处理,此外,它还提供了包括DES算法在内的35种处理数据用的函数
<div class="codetitle"><a style="CURSOR: pointer" data="45203" class="copybut" id="copybut45203" onclick="doCopy('code45203')"> 代码如下:

<div class="codebody" id="code45203">
/*
+-----------------------------------------------------
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,$iv);
}
if ($mode == 'encode'){
$passcrypt = base64_encode($passcrypt);
}
return $passcrypt;
}

别的网友的代码
<div class="codetitle"><a style="CURSOR: pointer" data="36917" class="copybut" id="copybut36917" onclick="doCopy('code36917')"> 代码如下:
<div class="codebody" id="code36917">
<?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),$ks);
mcrypt_generic_init($td,$iv); //初始处理
//加密
$encrypted = mcrypt_generic($td,'This is very important data');
//结束处理
mcrypt_generic_deinit($td);
//初始解密处理
mcrypt_generic_init($td,$iv);
//解密
$decrypted = mdecrypt_generic($td,$encrypted);
//结束
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
//解密后,可能会有后续的\0,需去掉
echo trim($decrypted) . "\n";
?>

mcrypt可逆加密

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...