国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

標準PHP的AES加密算法類

2024-05-04 23:32:13
字體:
來源:轉載
供稿:網友
AES是分組密鑰,算法輸入128位數據,密鑰長度也是128位。用Nr表示對一個數據分組加密的輪數(加密輪數與密鑰長度的關系如表1所列)。每一輪都需要一個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。
 

分享一個標準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加密算法類有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会同县| 花莲市| 常熟市| 清镇市| 临颍县| 楚雄市| 枣强县| 扎鲁特旗| 江门市| 乌什县| 东乌| 湘西| 吉木乃县| 石嘴山市| 申扎县| 获嘉县| 章丘市| 滦平县| 合川市| 宜昌市| 文化| 双桥区| 车致| 班戈县| 阿克陶县| 凉城县| 夏津县| 雅江县| 新疆| 犍为县| 泸定县| 年辖:市辖区| 阿坝县| 大悟县| 宜阳县| 乐陵市| 开原市| 伊金霍洛旗| 黄大仙区| 商南县| 竹溪县|