PHP 標準AES密碼編譯演算法類

來源:互聯網
上載者:User

標籤:

分享一個標準PHP的AES密碼編譯演算法類,其中mcrypt_get_block_size(‘rijndael-128‘, ‘ecb‘);,如果在不明白原理的情況下比較容易搞錯,可以通過mcrypt_list_algorithms函數查看你需要的密碼編譯演算法標識。

 

<?php/** * AES128加解密類 * @author dy * */defined(‘InEjbuy‘) or exit(‘Access Invalid!‘);class Aes{    //密鑰    private $_secrect_key;          public function __construct(){        $this->_secrect_key = ‘MYgGnQE2jDFADSFFDSEWsdD‘;    }    /**     * 加密方法     * @param string $str     * @return string     */    public function encrypt($str){        //AES, 128 ECB模式加密資料        $screct_key = $this->_secrect_key;        $screct_key = base64_decode($screct_key);        $str = trim($str);        $str = $this->addPKCS7Padding($str);        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);        $encrypt_str =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);        return base64_encode($encrypt_str);    }          /**     * 解密方法     * @param string $str     * @return string     */    public function decrypt($str){        //AES, 128 ECB模式加密資料        $screct_key = $this->_secrect_key;        $str = base64_decode($str);        $screct_key = base64_decode($screct_key);        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);        $encrypt_str =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);        $encrypt_str = trim($encrypt_str);        $encrypt_str = $this->stripPKSC7Padding($encrypt_str);        return $encrypt_str;          }          /**     * 填充演算法     * @param string $source     * @return string     */    function addPKCS7Padding($source){        $source = trim($source);        $block = mcrypt_get_block_size(‘rijndael-128‘, ‘ecb‘);        $pad = $block - (strlen($source) % $block);        if ($pad <= $block) {            $char = chr($pad);            $source .= str_repeat($char, $pad);        }        return $source;    }    /**     * 移去填充演算法     * @param string $source     * @return string     */    function stripPKSC7Padding($source){        $source = trim($source);        $char = substr($source, -1);        $num = ord($char);        if($num==62)return $source;        $source = substr($source,0,-$num);        return $source;    }}

 

PHP 標準AES密碼編譯演算法類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.