php中AES加密解密的例子小结
aesDemo.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." "; $cpt = $aes->decryptString($ct,$keys); echo "decode = ".$cpt; ?> 例子、AES加密类 代码如下: //php aes加密类
class AESMcrypt { public $iv = null; public function __construct($bit,$key,$iv,$mode) { $this->bit = $bit; switch($this->bit) { switch($this->mode) { public function encrypt($data) { public function decrypt($data) { } 例子、附一个可加密可解密类 代码如下: /** * AES加密、解密类 * @author hushangming * * 用法: *
*/ 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->_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->_type); }else{ $decodeString = mcrypt_decrypt($this->_bit,$this->_iv); } return $decodeString; }/** * 将$string转换成十六进制 * @param string $string * @return stream */ private function toHexString ($string){ $buf = ""; for ($i = 0; $i < strlen($string); $i++){ $val = dechex(ord($string{$i})); if(strlen($val)< 2) $val = "0".$val; $buf .= $val; } return $buf; }/** * 将十六进制流$string转换成字符串 * @param stream $string * @return string */ private function fromHexString($string){ $buf = ""; for($i = 0; $i < strlen($string); $i += 2){ $val = chr(hexdec(substr($string,$i,2))); $buf .= $val; } return $buf; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |