zl程序教程

您现在的位置是:首页 >  其它

当前栏目

PHPmcrypt可逆加密算法分析

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

/**
+-----------------------------------------------------
*Mcrypt加密/解密
*@paramString$date要加密和解密的数据
*@paramString$modeencode默认为加密/decode为解密
*@returnString
*@authorzxing@97md.netMonSep1422:59:28CST2009
+-----------------------------------------------------
*@example
*/
functionZxingCrypt($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="erysecretkey";//密钥
$key=substr(md5($key),0,$ks);
mcrypt_generic_init($td,$key,$iv);//初始处理
//加密
$encrypted=mcrypt_generic($td,"Thisisveryimportantdata");
//结束处理
mcrypt_generic_deinit($td);
//初始解密处理
mcrypt_generic_init($td,$key,$iv);
//解密
$decrypted=mdecrypt_generic($td,$encrypted);
//结束
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
//解密后,可能会有后续的\0,需去掉
echotrim($decrypted)."\n";
?>