ecshop的aes加密(封裝)的實例教學
從一家做shopex,ecstore的公司到一家做b2b的ecshop的公司...來了就要實戰,其他的不說了,先來了解什麼是php的aes加密吧?
aes(高級加密標準),AES的區塊長度固定為128 比特,密鑰長度則可以是128,192或256比特;是一個可逆的加密方式,同md5不同。
AES分為幾種模式,例如ECB,CBC,CFB等等,這些模式除了ECB由於沒有使用IV而不太安全,其他模式差異並沒有太明顯,大部分的區別在IV和KEY來計算密文的方法略有區別。
iv的作用?
IV稱為初始向量,不同的IV加密後的字串是不同的,加密和解密需要相同的IV,既然IV看起來和key一樣,卻還要多一個IV的目的,對於每個區塊來說,key是不變的,但是只有第一個區塊的IV是使用者提供的,其他區塊IV都是自動產生。
IV的長度為16位元組。超過或不足,可能實現的程式庫都會進行補齊或截斷。但是由於塊的長度是16字節,所以一般可以認為需要的IV是16位元組。
到現在對aes有了一定的了解,就開始上程式碼吧。
<?phpclass cryptaes{protected $cipher = MCRYPT_RIJNDAEL_128;protected $mode = MCRYPT_MODE_ECB;protected $pad_method = '';protected $secret_key = '';protected $iv = ''; public function set_cipher($cipher) {$this->cipher = $cipher; } public function set_mode($mode) {$this->mode = $mode; } public function set_iv($iv) {$this->iv = $iv; } public function set_key($key) {$this->secret_key = $key; } public function require_pkcs5() {$this->pad_method = 'pkcs5'; } protected function pad_or_unpad($str, $ext) {if ( is_null($this->pad_method) ) {return $str; }else{$func_name = __CLASS__ . '::' . $this->pad_method . '_' . $ext . 'pad';if ( is_callable($func_name) ) {$size = mcrypt_get_block_size($this->cipher, $this->mode);return call_user_func($func_name, $str, $size); } }return $str; } protected function pad($str) {return $this->pad_or_unpad($str, ''); } protected function unpad($str) {return $this->pad_or_unpad($str, 'un'); } //加密类public function encrypt($str) {print_r($str);$str = $this->pad($str);$td = mcrypt_module_open($this->cipher, '', $this->mode, ''); if ( empty($this->iv) ) {$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); }else{$iv = $this->iv; } mcrypt_generic_init($td, $this->secret_key, $iv);$cyper_text = mcrypt_generic($td, $str);$rt=base64_encode($cyper_text);//$rt = bin2hex($cyper_text);mcrypt_generic_deinit($td); mcrypt_module_close($td); return $rt; } //解密类public function decrypt($str){$td = mcrypt_module_open($this->cipher, '', $this->mode, ''); if ( empty($this->iv) ) {$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); }else{$iv = $this->iv; } mcrypt_generic_init($td, $this->secret_key, $iv);//$decrypted_text = mdecrypt_generic($td, self::hex2bin($str));$decrypted_text = mdecrypt_generic($td, base64_decode($str));$rt = $decrypted_text; mcrypt_generic_deinit($td); mcrypt_module_close($td); return $this->unpad($rt); } public static function hex2bin($hexdata) {$bindata = '';$length = strlen($hexdata);for ($i=0; $i < $length; $i += 2) {$bindata .= chr(hexdec(substr($hexdata, $i, 2))); }return $bindata; } public static function pkcs5_pad($text, $blocksize) {$pad = $blocksize - (strlen($text) % $blocksize);return $text . str_repeat(chr($pad), $pad); } public static function pkcs5_unpad($text) {$pad = ord($text{strlen($text) - 1});if ($pad > strlen($text)) return false;if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;return substr($text, 0, -1 * $pad); } }?>
aes加密解密封裝類別封裝好了,在需要的地方加密:
require_once(ROOT_PATH . 'includes/lib_smt_cryptaes.php'); //ecshop引入文件方式$aes_obj = new cryptaes();$iv = '12345678baiducom';$privateKey = '12345678baiducom';$data['a'] = ‘周二’;$data['b'] = ‘周三’;$data['c'] = ‘周四’;$da = json_encode($data);$aes_obj->set_key($privateKey);$aes_obj->require_pkcs5();$aes_obj->set_iv($iv);$il = $aes_obj->encrypt($da);//写入cookiesetcookie('il', $il,time()+360000); //加密结果$il
這邊我想傳遞的是一個數組,要注意的是aes只能加密字串。需要轉換為字串。
= ['il'(ROOT_PATH . 'includes/lib_smt_cryptaes.php' = = '12345678baiducom'; = '12345678baiducom'->set_key(->->set_iv( = ->decrypt( = json_decode(,); print_r($j_token);//解密结果
這樣就完成了aes的加密,並且傳送。
歡迎大家提出問題,大家一起交流,一起成長。
以上是ecshop的aes加密(封裝)的實例教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本站4月17日消息,集邦諮詢(TrendForce)近日發布報告,認為英偉達Blackwell新平台產品需求看漲,預估帶動台積電2024年CoWoS封裝總產能提升逾150%。英偉達Blackwell新平台產品包含B系列的GPU,以及整合英偉達自家GraceArmCPU的GB200加速卡等。集邦諮詢確認為供應鏈目前非常看好GB200,預估2025年出貨量預計超過百萬片,在英偉達高階GPU中的佔比達到40-50%。在英偉達計畫下半年交付GB200以及B100等產品,但上游晶圓封裝方面須進一步採用更複

小編將為大家介紹加密壓縮的三種方法:方法一:加密最簡單的加密方法,就是在加密檔案時輸入想要設定的密碼,完成加密和壓縮了。方法二:自動加密普通的加密方式,需要我們加密每個檔案的時候都需要輸入密碼,如果你想要加密大量壓縮包,並且密碼是一樣的話,那麼我們可以在WinRAR中設定自動加密,之後只要正常壓縮文件,WinRAR會為每個壓縮包添加密碼。方法如下:開啟WinRAR,點選選項–設定設定介面中,切換到【壓縮】,點選建立預設設定–設定密碼在這裡輸入我們想要設定的密碼,點選確定就完成設定了,我們只需要正

資料夾加密是一種常見的資料保護方法,它可以將資料夾中的內容加密,使得只有掌握解密密碼的人能夠存取其中的檔案。在進行資料夾加密時,有一些常見的方法可以用來設定密碼,而不需要壓縮檔案。首先,我們可以使用作業系統自帶的加密功能來設定資料夾密碼。對於Windows使用者來說,可以透過以下步驟來設定:選擇要加密的資料夾,滑鼠右鍵點選資料夾,選擇「屬性」選

在蘋果手機中,用戶可以根據自己的需求來加密相簿。有些用戶並不清楚該怎麼設定。可以將需要加密圖片加入備忘錄後,再去鎖定備忘錄即可,接下來就是小編為用戶帶來的手機相簿加密設定方法的介紹,有興趣的用戶快來一起看看吧!蘋果手機使用教學蘋果手機相簿加密怎麼設定答:將需要加密圖片加入備忘錄後,再去鎖定備忘錄即可詳情介紹:1、進入相冊,選擇需要加密的圖片,再點擊下方的【新增到】。 2、選擇【加入備忘錄】。 3.進入備忘錄,找到剛更創建的備忘錄,進入,點選右上角的【傳送】圖示。 4.點選下方的【鎖定備

本站7月9日訊息,AMDZen5架構「Strix」系列處理器會有兩種封裝方案,其中較小的StrixPoint將採用FP8封裝,而StrixHalo將會採用FP11封裝。圖源:videocardz訊息源@Olrak29_最新曝料稱StrixHalo的FP11封裝尺寸為37.5mm*45mm(1687平方毫米),和英特爾AlderLake、RaptorLakeCPU的LGA-1700封裝尺寸相同。 AMD最新的PhoenixAPU採用FP8封裝方案,尺寸為25*40mm,這意味著StrixHalo的F

透過封裝程式碼,C++函數可以提高GUI開發效率:程式碼封裝:函數將程式碼分組到獨立單元,使程式碼易於理解和維護。可重複使用性:函數可建立通用功能供應用程式中重複使用,減少重複編寫和錯誤。簡潔程式碼:封裝程式碼讓主邏輯簡潔,方便閱讀和除錯。

原文作者:Meteor,ChainCatcher原文編輯:Marco,ChainCatcher近期,全鏈互通協議Analog因披露1600萬美元融資而進入公眾視野,投資機構包括TribeCapital、NGCVentures、Wintermute、GSR、NEAR、OrangeDAO,以及MikeNogratzO,以及MikeNogratz的另類資產管理公司SamaraAssetGroup、BalajiSrinivasan等。 2023年底,Analog在業界引起了一些轟動,他們在X平台發布了關於開放測試網註冊活動的

螢石雲解除視訊加密的方法:有多種方法可以解除螢石雲視訊加密,其中一種是透過使用螢石雲手機App。用戶只需進入裝置列表,選擇要解密的攝影機並進入裝置詳情頁面。在裝置詳情頁,找到「設定」選項,然後選擇「影片加密」進行相關設定。在視訊加密設定介面中,可以選擇關閉視訊加密的選項,儲存設定即可完成解密操作。這種簡單的步驟可以讓使用者輕鬆解除視訊加密,提升攝影機的使用便利性。如果您使用螢石雲的電腦用戶端,同樣可以透過類似的步驟來取消視訊加密。只需登入後選擇對應的鏡頭,進入裝置詳情介面,然後在設定中尋找影片加
