码迷,mamicode.com
首页 > 其他好文 > 详细

AES加解密

时间:2018-08-03 16:33:41      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:pre   enc   mode   mod   byte   data   var_dump   十六进制   echo   

AES加密类

<?php

//php aes加密类
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), "..");
return $data;
}
}
//使用方法
$aes = new AESMcrypt($bit = 128, $key = abcdef1234567890, $iv = 0987654321fedcba, $mode = cbc);
$c = $aes->encrypt(haowei.me);
var_dump($aes->decrypt($c));

demo

<?php

require_once(./AES.php);
//$aes = new AES();
$aes = new AES(true);// 把加密后的字符串按十六进制进行存储
//$aes = new AES(true,true);// 带有调试信息且加密字符串按十六进制存储
$key = "this is a 32 byte key";// 密钥
$keys = $aes->makeKey($key);
$encode = "123456";// 被加密的字符串
$ct = $aes->encryptString($encode, $keys);
echo "encode = ".$ct."<br>";
$cpt = $aes->decryptString($ct, $keys);
echo "decode = ".$cpt;
?>

 

AES加解密

标签:pre   enc   mode   mod   byte   data   var_dump   十六进制   echo   

原文地址:https://www.cnblogs.com/xiaobiaomei/p/9414286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!