php寫的AES加密解密類分享_PHP教程

來源:互聯網
上載者:User
今天寫了一個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 $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);}}

http://www.bkjia.com/PHPjc/825418.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825418.htmlTechArticle今天寫了一個php的AES加密類。適用於Yii的擴充。 如果不用在Yii架構中,把代碼中Yii::app()-params['encryptKey'] 換成你對應的預設key就可以了。...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.