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

}

最新文章

  1. Xamarin.Android快速入门
  2. 项目实现不同环境不同配置文件-maven profile
  3. 文件处理命令:awk
  4. 简介 &ndash; ASP.NET MVC 4 系列
  5. Windows下mysql忘记root密码的解决方法
  6. SQL同列合并
  7. 仿Android网易新闻客户端,并增加水平图片滑动,改进阅读体验
  8. Connection对象连接加密2
  9. mysql中增加某一时间段内的时间数据(包含:时间、年、月、日、第几周、季度)
  10. LintCode-字符串查找
  11. java 类与对象
  12. Winform消息与并行的形象比喻
  13. 字符串的查找KMP
  14. vuex原理
  15. Key in_hidden/batch_normalization/beta not found in checkpoint
  16. Weblogic在Linux下启动特别慢及进入控制台慢的解决方法
  17. 格式化文本数据抽取工具awk
  18. HDU 1019 (多个数的最小公倍数)
  19. Web—04-详解HTML5与CSS3
  20. 妙用next数组打表求最小循环节len

热门文章

  1. servlet规范核心类图
  2. css3 box-shadow 阴影的用法
  3. CEdit实现文本换行
  4. python 信用卡系统+购物商城见解
  5. VMWare网络链接三种方式
  6. JPA 系列教程16-继承-联合子类-JOINED
  7. CentOS环境搭建(JDK安装、mysql安装、hadoop安装等)
  8. Minigui开发之遥控控制逻辑算法
  9. getScrollX()理解
  10. oracle 备份操作流程