美文网首页
aes class 实现加密解密

aes class 实现加密解密

作者: 进击的PHPer | 来源:发表于2019-03-28 21:56 被阅读0次

    namespace app\common\lib;

    /**

    * aes 加密 解密类库

    * @by singwa

    * Class Aes

    * @package app\common\lib

    */

    class Aes {

        private $key = null;

        /**

    *

        * @param $key        密钥

        * @return String

    */

        public function __construct() {

            // 需要小伙伴在配置文件app.php中定义aeskey

            $this->key = config('app.aeskey');

    }

        /**

    * 加密

        * @param String input 加密的字符串

        * @param String key  解密的key

        * @return HexString

    */

        public function encrypt($input = '') {

            $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);

            $input = $this->pkcs5_pad($input, $size);

            $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');

            $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

            mcrypt_generic_init($td, $this->key, $iv);

            $data = mcrypt_generic($td, $input);

            mcrypt_generic_deinit($td);

            mcrypt_module_close($td);

            $data = base64_encode($data);

            return $data;

    }

        /**

    * 填充方式 pkcs5

        * @param String text      原始字符串

        * @param String blocksize  加密长度

        * @return String

    */

        private function pkcs5_pad($text, $blocksize) {

            $pad = $blocksize - (strlen($text) % $blocksize);

            return $text . str_repeat(chr($pad), $pad);

    }

        /**

    * 解密

        * @param String input 解密的字符串

        * @param String key  解密的key

        * @return String

    */

        public function decrypt($sStr) {

            $decrypted= mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$this->key,base64_decode($sStr), MCRYPT_MODE_ECB);

            $dec_s = strlen($decrypted);

            $padding = ord($decrypted[$dec_s-1]);

            $decrypted = substr($decrypted, 0, -$padding);

            return $decrypted;

    }

    }

    相关文章

      网友评论

          本文标题:aes class 实现加密解密

          本文链接:https://www.haomeiwen.com/subject/rbdhbqtx.html