php des 加密类
<?php
/**
*@see Yii CSecurityManager;
*/
class Des{
public static function encrypt($data,$key){
$module=mcrypt_module_open('des','', MCRYPT_MODE_CBC,'');
$key=substr(md5($key),0,mcrypt_enc_get_key_size($module));
srand();
$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($module), MCRYPT_RAND);
mcrypt_generic_init($module,$key,$iv);
$encrypted=$iv.mcrypt_generic($module,$data);
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
return md5($data).'_'.base64_encode($encrypted);
}
public static function decrypt($data,$key){
$_data = explode('_',$data,2);
if(count($_data)<2){
return false;
}
$data = base64_decode($_data[1]);
$module=mcrypt_module_open('des','', MCRYPT_MODE_CBC,'');
$key=substr(md5($key),0,mcrypt_enc_get_key_size($module));
$ivSize=mcrypt_enc_get_iv_size($module);
$iv=substr($data,0,$ivSize);
mcrypt_generic_init($module,$key,$iv);
$decrypted=mdecrypt_generic($module,substr($data,$ivSize,strlen($data)));
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
$decrypted = rtrim($decrypted,"\0");
if($_data[0]!=md5($decrypted)){
return false;
}
return $decrypted;
}
}
最新文章
- Xamarin.Android快速入门
- 项目实现不同环境不同配置文件-maven profile
- 文件处理命令:awk
- 简介 &ndash; ASP.NET MVC 4 系列
- Windows下mysql忘记root密码的解决方法
- SQL同列合并
- 仿Android网易新闻客户端,并增加水平图片滑动,改进阅读体验
- Connection对象连接加密2
- mysql中增加某一时间段内的时间数据(包含:时间、年、月、日、第几周、季度)
- LintCode-字符串查找
- java 类与对象
- Winform消息与并行的形象比喻
- 字符串的查找KMP
- vuex原理
- Key in_hidden/batch_normalization/beta not found in checkpoint
- Weblogic在Linux下启动特别慢及进入控制台慢的解决方法
- 格式化文本数据抽取工具awk
- HDU 1019 (多个数的最小公倍数)
- Web—04-详解HTML5与CSS3
- 妙用next数组打表求最小循环节len