最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

標(biāo)準(zhǔn)PHP的AES加密算法類

 更新時(shí)間:2023年05月03日 12:40:58   投稿:hebedich  
AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長度也是128位。用Nr表示對一個(gè)數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長度的關(guān)系如表1所列)。每一輪都需要一個(gè)與輸入分組具有相同長度的擴(kuò)展密鑰Expandedkey(i)的參與。

分享一個(gè)標(biāo)準(zhǔn)PHP的AES加密算法類,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情況下比較容易搞錯(cuò),可以通過mcrypt_list_algorithms函數(shù)查看你需要的加密算法標(biāo)識(shí)。

<?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模式加密數(shù)據(jù)
??????? $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模式加密數(shù)據(jù)
??????? $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算法的通用函數(shù)

 function aesEncrypt($data, $key, $iv) {
    $cipher = "aes-256-cbc";
    $padding = OPENSSL_PKCS1_PADDING;
    $encrypted = openssl_encrypt($data, $cipher, $key, $padding, $iv);
    return base64_encode($encrypted);
}
function aesDecrypt($data, $key, $iv) {
    $cipher = "aes-256-cbc";
    $padding = OPENSSL_PKCS1_PADDING;
    $decrypted = openssl_decrypt(base64_decode($data), $cipher, $key, $padding, $iv);
    return $decrypted;
}

該函數(shù)使用AES-256-CBC加密算法和PKCS1填充模式。它需要三個(gè)參數(shù):要加密/解密的數(shù)據(jù),密鑰和初始化向量(IV)。在加密時(shí),數(shù)據(jù)將被加密并返回Base64編碼的字符串。在解密時(shí),Base64編碼的字符串將被解碼并返回原始數(shù)據(jù)。

以上就是本文所述的全部內(nèi)容了,希望對大家學(xué)習(xí)php的AES加密算法類有所幫助。

相關(guān)文章

  • php猴子選大王問題解決方法

    php猴子選大王問題解決方法

    這篇文章主要介紹了php猴子選大王問題解決方法,其本質(zhì)為約瑟夫環(huán)問題,這里提供了一種較為簡單的解決方法,需要的朋友可以參考下
    2015-05-05
  • php+xml實(shí)現(xiàn)在線英文詞典查詢的方法

    php+xml實(shí)現(xiàn)在線英文詞典查詢的方法

    這篇文章主要介紹了php+xml實(shí)現(xiàn)在線英文詞典查詢的方法,通過將XML文件作數(shù)據(jù)庫實(shí)現(xiàn)查詢英文對應(yīng)漢字的功能,需要的朋友可以參考下
    2015-01-01
  • PHP獲取對象屬性的三種方法實(shí)例分析

    PHP獲取對象屬性的三種方法實(shí)例分析

    這篇文章主要介紹了PHP獲取對象屬性的三種方法,結(jié)合實(shí)例形式分析了php面向?qū)ο蟪绦蛟O(shè)計(jì)中獲取對象屬性的常見操作技巧,需要的朋友可以參考下
    2019-01-01
  • php apache開啟跨域模式過程詳解

    php apache開啟跨域模式過程詳解

    這篇文章主要介紹了php apache開啟跨域模式過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • php UBB 解析實(shí)現(xiàn)代碼

    php UBB 解析實(shí)現(xiàn)代碼

    今天看thinkphp演示文檔看到這個(gè)ubb的代碼感覺還可以。
    2011-11-11
  • Windows下的PHP安裝pear教程

    Windows下的PHP安裝pear教程

    這篇文章主要介紹了Windows下的PHP安裝pear教程,本文在CMD中使用PHP命令安裝pear,不同網(wǎng)上的其他教程,需要的朋友可以參考下
    2014-10-10
  • PHP打印輸出函數(shù)匯總

    PHP打印輸出函數(shù)匯總

    本文給大家匯總介紹了7種php常用的打印輸出函數(shù),分別是echo,print,printf,sprintf,print_r,var_dump,die,希望對大家學(xué)習(xí)php能夠有所幫助
    2016-08-08
  • php中strtotime函數(shù)用法詳解

    php中strtotime函數(shù)用法詳解

    這篇文章主要介紹了php中strtotime函數(shù)的用法,以實(shí)例形式詳細(xì)分析了strtotime函數(shù)的參數(shù)含義與相應(yīng)的用法,適用于時(shí)間格式變換的情況,需要的朋友可以參考下
    2014-11-11
  • PHP簡單獲取網(wǎng)站百度搜索和搜狗搜索收錄量的方法

    PHP簡單獲取網(wǎng)站百度搜索和搜狗搜索收錄量的方法

    這篇文章主要介紹了PHP簡單獲取網(wǎng)站百度搜索和搜狗搜索收錄量的方法,涉及php網(wǎng)頁文件的讀取及正則替換的相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08

最新評論

肥城市| 麦盖提县| 乐业县| 万盛区| 琼海市| 阜城县| 铁岭县| 冷水江市| 惠安县| 稷山县| 林州市| 宁德市| 丰台区| 杭锦后旗| 镇康县| 洛川县| 岱山县| 赤壁市| 晋江市| 盈江县| 漯河市| 兴安县| 双桥区| 大冶市| 沭阳县| 乌拉特后旗| 喀什市| 门头沟区| 锡林浩特市| 祁门县| 锡林浩特市| 鹤庆县| 玉龙| 彭州市| 沁水县| 远安县| 女性| 那曲县| 德安县| 肥乡县| 定陶县|