aesdemo.php:
例子,
复制代码 代码如下:
makekey($key);
$encode = 123456;// 被加密的字符串
$ct = $aes->encryptstring($encode, $keys);
echo encode = .$ct.
;
$cpt = $aes->decryptstring($ct, $keys);
echo decode = .$cpt;
?>
例子、aes加密类
复制代码 代码如下:
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));
例子、附一个可加密可解密类
复制代码 代码如下:
encode($string);
* // 解密
* $decodestring = $tcaes->decode($encodestring);
*
*/
class tcaes{
private $_bit = mcrypt_rijndael_256;
private $_type = mcrypt_mode_cbc;
//private $_key = 'abcdefghijuklmno0123456789012345';
private $_key = 'abcdefghijuklmno'; // 密钥
private $_use_base64 = true;
private $_iv_size = null;
private $_iv = null;
/**
* @param string $_key 密钥
* @param int $_bit 默认使用128字节
* @param string $_type 加密解密方式
* @param boolean $_use_base64 默认使用base64二次加密
*/
public function __construct($_key = '', $_bit = 128, $_type = 'ecb', $_use_base64 = true){
// 加密字节
if(192 === $_bit){
$this->_bit = mcrypt_rijndael_192;
}elseif(128 === $_bit){
$this->_bit = mcrypt_rijndael_128;
}else{
$this->_bit = mcrypt_rijndael_256;
}
// 加密方法
if('cfb' === $_type){
$this->_type = mcrypt_mode_cfb;
}elseif('cbc' === $_type){
$this->_type = mcrypt_mode_cbc;
}elseif('nofb' === $_type){
$this->_type = mcrypt_mode_nofb;
}elseif('ofb' === $_type){
$this->_type = mcrypt_mode_ofb;
}elseif('stream' === $_type){
$this->_type = mcrypt_mode_stream;
}else{
$this->_type = mcrypt_mode_ecb;
}
// 密钥
if(!empty($_key)){
$this->_key = $_key;
}
// 是否使用base64
$this->_use_base64 = $_use_base64;
$this->_iv_size = mcrypt_get_iv_size($this->_bit, $this->_type);
$this->_iv = mcrypt_create_iv($this->_iv_size, mcrypt_rand);
}
/**
* 加密
* @param string $string 待加密字符串
* @return string
*/
public function encode($string){
if(mcrypt_mode_ecb === $this->_type){
$encodestring = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type);
}else{
$encodestring = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);
}
if($this->_use_base64)
$encodestring = base64_encode($encodestring);
return $encodestring;
}
/**
* 解密
* @param string $string 待解密字符串
* @return string
*/
public function decode($string){
if($this->_use_base64)
$string = base64_decode($string);
$string = $this->tohexstring($string);
if(mcrypt_mode_ecb === $this->_type){
$decodestring = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type);
}else{
$decodestring = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);
}
return $decodestring;
}
/**
* 将$string转换成十六进制
* @param string $string
* @return stream
*/
private function tohexstring ($string){
$buf = ;
for ($i = 0; $i $val = dechex(ord($string{$i}));
if(strlen($val) $val = 0.$val;
$buf .= $val;
}
return $buf;
}
/**
* 将十六进制流$string转换成字符串
* @param stream $string
* @return string
*/
private function fromhexstring($string){
$buf = ;
for($i = 0; $i $val = chr(hexdec(substr($string, $i, 2)));
$buf .= $val;
}
return $buf;
}
}
http://www.bkjia.com/phpjc/825299.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/825299.htmltecharticleaesdemo.php: 例子, 复制代码 代码如下: ?php require_once('./aes.php'); //$aes = new aes(); $aes = new aes(true);// 把加密后的字符串按十六进制进行存储...
