php写的AES加密解密类分享
php  /  管理员 发布于 7年前   393
今天写了一个php的AES加密类。适用于Yii的扩展。
如果不用在Yii框架中,把代码中Yii::app()->params['encryptKey'] 换成你对应的默认key就可以了。
类代码: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 $encryptedbase64_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);}}
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号