php实现aes加密类分享

 更新时间:2014年02月16日 15:53:39   作者:  
这篇文章主要介绍了php实现的aes加密类,代码中有使用方法,需要的朋友可以参考下

复制代码 代码如下:

<?php

class AESMcrypt {

 public $iv = null;
 public $key = null;
 public $bit = 128;
 private $cipher;

 public function __construct($bit, $key, $iv, $mode) {
  if(empty($bit) || empty($key) || empty($iv) || empty($mode))
  return NULL;

  $this->bit = $bit;
  $this->key = $key;
  $this->iv = $iv;
  $this->mode = $mode;

  switch($this->bit) {
   case 192:$this->cipher = MCRYPT_RIJNDAEL_192; break;
   case 256:$this->cipher = MCRYPT_RIJNDAEL_256; break;
   default: $this->cipher = MCRYPT_RIJNDAEL_128;
  }

  switch($this->mode) {
   case 'ecb':$this->mode = MCRYPT_MODE_ECB; break;
   case 'cfb':$this->mode = MCRYPT_MODE_CFB; break;
   case 'ofb':$this->mode = MCRYPT_MODE_OFB; break;
   case 'nofb':$this->mode = MCRYPT_MODE_NOFB; break;
   default: $this->mode = MCRYPT_MODE_CBC;
  }
 }

 public function encrypt($data) {
  $data = base64_encode(mcrypt_encrypt( $this->cipher, $this->key, $data, $this->mode, $this->iv));
  return $data;
 }

 public function decrypt($data) {
  $data = mcrypt_decrypt( $this->cipher, $this->key, base64_decode($data), $this->mode, $this->iv);
  $data = rtrim(rtrim($data), "\x00..\x1F");
  return $data;
 }

}

//使用方法
$aes = new AESMcrypt($bit = 128, $key = 'abcdef1234567890', $iv = '0987654321fedcba', $mode = 'cbc');
$c = $aes->encrypt('haowei.me');
var_dump($aes->decrypt($c));

相关文章

  • php 实现收藏功能的示例代码

    php 实现收藏功能的示例代码

    本篇文章主要介绍了php 实现收藏功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)

    thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)

    这篇文章主要介绍了thinkPHP+PHPExcel实现读取文件日期的方法,可实现针对时分秒的形式进行读取的功能,涉及PHPExcel中ExcelToPHP函数的相关使用方法,需要的朋友可以参考下
    2016-07-07
  • Laravel中为什么不使用blpop取队列详析

    Laravel中为什么不使用blpop取队列详析

    这篇文章主要给大家介绍了关于Laravel中为什么不使用blpop取队列的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • php+ffmpeg如何获取视频缩略图、视频分辨率等相关信息

    php+ffmpeg如何获取视频缩略图、视频分辨率等相关信息

    这篇文章主要给大家介绍了关于php+ffmpeg如何获取视频缩略图、视频分辨率等相关信息的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • ThinkPHP3.1新特性之多数据库操作更加完善

    ThinkPHP3.1新特性之多数据库操作更加完善

    对于早期版本的ThinkPHP来说,切换数据库需要使用高级模型,而现在的3.1版本则可以更加轻松的解决了。这篇文章主要介绍了ThinkPHP3.1对多数据库操作,需要的朋友可以参考下
    2014-06-06
  • PHP实现无限分类的实现方法

    PHP实现无限分类的实现方法

    无限级分类是一种设计技巧,在开发中经常使用,本篇文章主要介绍PHP实现无限分类的实现方法,有需要的可以了解一下。
    2016-11-11
  • function.inc.php超越php

    function.inc.php超越php

    function.inc.php超越php...
    2006-12-12
  • Laravel中Kafka的使用详解

    Laravel中Kafka的使用详解

    这篇文章主要介绍了Laravel中Kafka的使用详解,kafka是一个分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力,有对于消息队列感兴趣的同学可以参考下
    2021-03-03
  • thinkPHP中session()方法用法详解

    thinkPHP中session()方法用法详解

    这篇文章主要介绍了thinkPHP中session()方法用法,结合实例形式分析了thinkPHP中session方法的功能、参数、具体使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • PHP date()函数警告: It is not safe to rely on the system解决方法

    PHP date()函数警告: It is not safe to rely on the system解决方法

    这篇文章主要介绍了PHP date()函数警告: It is not safe to rely on the system解决方法,其实就是时区设置不正确造成的,本文提供了两种方法来解决这个问题,需要的朋友可以参考下
    2014-08-08

最新评论