php中可逆算法,深入理解PHP中mcrypt的可逆加密算法

数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据。对于不需要还原为原始数据的信息我们可以使用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中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值