php写的AES加密解密类分享
网络编程 2021-07-05 09:50www.168986.cn编程入门
这篇文章主要介绍了php写的AES加密解密类,实际是为YII框架写的,不在YII框架时只需替换其中的两句代码即可使用,需要的朋友可以参考下
今天写了一个php的AES加密类。适用于Yii的扩展。
如果不用在Yii框架中,把代码中Yii::app()->params['encryptKey'] 换成你对应的默认key就可以了。
类代码:
<?php / php AES加解密类 如果要与java共用,则密钥长度应该为16位长度 因为java只支持128位加密,所以php也用128位加密,可以与java互转。 AES的标准也是128位。只是RIJNDAEL算法可以支持128,192和256位加密。 java 要使用AES/CBC/NoPadding标准来加解密 @author Terry / class PhpAes { / This was AES-128 / CBC / NoPadding encrypted. return base64_encode string @author Terry @param string $plaintext @param string $key / public static function AesEncrypt($plaintext,$key = null) { $plaintext = trim($plaintext); if ($plaintext == '') return ''; if(!extension_loaded('mcrypt')) throw new CException(Yii::t('yii','AesEncrypt requires PHP mcrypt extension to be loaded in order to use data encryption feature.')); $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $key=self::substr($key===null ? Yii::app()->params['encryptKey'] : $key, 0, mcrypt_enc_get_key_size($module)); / Create the IV and determine the keysize length, use MCRYPT_RAND on Windows instead / $iv = substr(md5($key),0,mcrypt_enc_get_iv_size($module)); / Intialize encryption / mcrypt_generic_init($module, $key, $iv); / Encrypt data / $encrypted = mcrypt_generic($module, $plaintext); / Terminate encryption handler / mcrypt_generic_deinit($module); mcrypt_module_close($module); return base64_encode($encrypted); } / This was AES-128 / CBC / NoPadding decrypted. @author Terry @param string $encrypted base64_encode encrypted string @param string $key @throws CException @return string / public static function AesDecrypt($encrypted, $key = null) { if ($encrypted == '') return ''; if(!extension_loaded('mcrypt')) throw new CException(Yii::t('yii','AesDecrypt requires PHP mcrypt extension to be loaded in order to use data encryption feature.')); $ciphertext_dec = base64_decode($encrypted); $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $key=self::substr($key===null ? Yii::app()->params['encryptKey'] : $key, 0, mcrypt_enc_get_key_size($module)); $iv = substr(md5($key),0,mcrypt_enc_get_iv_size($module)); / Initialize encryption module for decryption / mcrypt_generic_init($module, $key, $iv); / Decrypt encrypted string / $decrypted = mdecrypt_generic($module, $ciphertext_dec); / Terminate decryption handle and close module / mcrypt_generic_deinit($module); mcrypt_module_close($module); return rtrim($decrypted,"\0"); } / Returns the length of the given string. If available uses the multibyte string function mb_strlen. @param string $string the string being measured for length @return integer the length of the string / private static function strlen($string) { return extension_loaded('mbstring') ? mb_strlen($string,'8bit') : strlen($string); } / Returns the portion of string specified by the start and length parameters. If available uses the multibyte string function mb_substr @param string $string the input string. Must be one character or longer. @param integer $start the starting position @param integer $length the desired portion length @return string the extracted part of string, or FALSE on failure or an empty string. / private static function substr($string,$start,$length) { return extension_loaded('mbstring') ? mb_substr($string,$start,$length,'8bit') : substr($string,$start,$length); } }
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程