分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size(‘rijndael-128’, ‘ecb’);,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识。
<br /><?php<br />/**<br /> * AES128加解密类<br /> * @author dy<br /> *<br /> */<br />defined('InEjbuy') or exit('Access Invalid!');<br />class Aes{<br /> //密钥<br /> private $_secrect_key;<br /> public function __construct(){<br /> $this->_secrect_key = 'MYgGnQE2jDFADSFFDSEWsdD';<br /> }<br /> /**<br /> * 加密方法<br /> * @param string $str<br /> * @return string<br /> */<br /> public function encrypt($str){<br /> //AES, 128 ECB模式加密数据<br /> $screct_key = $this->_secrect_key;<br /> $screct_key = base64_decode($screct_key);<br /> $str = trim($str);<br /> $str = $this->addPKCS7Padding($str);<br /> $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);<br /> $encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);<br /> return base64_encode($encrypt_str);<br /> }<br /> /**<br /> * 解密方法<br /> * @param string $str<br /> * @return string<br /> */<br /> public function decrypt($str){<br /> //AES, 128 ECB模式加密数据<br /> $screct_key = $this->_secrect_key;<br /> $str = base64_decode($str);<br /> $screct_key = base64_decode($screct_key);<br /> $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);<br /> $encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);<br /> $encrypt_str = trim($encrypt_str);<br /> $encrypt_st<span>%本文来源gaodai#ma#com搞*代#码9网#</span><strong>搞gaodaima代码</strong>r = $this->stripPKSC7Padding($encrypt_str);<br /> return $encrypt_str;<br /> }<br /> /**<br /> * 填充算法<br /> * @param string $source<br /> * @return string<br /> */<br /> function addPKCS7Padding($source){<br /> $source = trim($source);<br /> $block = mcrypt_get_block_size('rijndael-128', 'ecb');<br /> $pad = $block - (strlen($source) % $block);<br /> if ($pad <= $block) {<br /> $char = chr($pad);<br /> $source .= str_repeat($char, $pad);<br /> }<br /> return $source;<br /> }<br /> /**<br /> * 移去填充算法<br /> * @param string $source<br /> * @return string<br /> */<br /> function stripPKSC7Padding($source){<br /> $source = trim($source);<br /> $char = substr($source, -1);<br /> $num = ord($char);<br /> if($num==62)return $source;<br /> $source = substr($source,0,-$num);<br /> return $source;<br /> }<br />}<br />
以上就是本文所述的全部内容了,希望对大家学习php的AES加密算法类有所帮助。