PHP的AES加密算法完整實例
本文實例講述了PHP的AES加密算法。分享給大家供大家參考,具體如下:
<?php class MCrypt { private $hex_iv = '00000000000000000000000000000000'; # converted JAVA byte code in to HEX and placed it here private $key = 'U1MjU1M0FDOUZ.Qz'; #Same as in JAVA function __construct() { $this->key = hash('sha256', $this->key, true); //echo $this->key.'<br/>'; } function encrypt($str) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv)); $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $pad = $block - (strlen($str) % $block); $str .= str_repeat(chr($pad), $pad); $encrypted = mcrypt_generic($td, $str); mcrypt_generic_deinit($td); mcrypt_module_close($td); return base64_encode($encrypted); } function decrypt($code) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv)); $str = mdecrypt_generic($td, base64_decode($code)); $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); mcrypt_generic_deinit($td); mcrypt_module_close($td); return $this->strippadding($str); } /* For PKCS7 padding */ private function addpadding($string, $blocksize = 16) { $len = strlen($string); $pad = $blocksize - ($len % $blocksize); $string .= str_repeat(chr($pad), $pad); return $string; } private function strippadding($string) { $slast = ord(substr($string, -1)); $slastc = chr($slast); $pcheck = substr($string, -$slast); if (preg_match("/$slastc{" . $slast . "}/", $string)) { $string = substr($string, 0, strlen($string) - $slast); return $string; } else { return false; } } function hexToStr($hex) { $string=''; for ($i=0; $i < strlen($hex)-1; $i+=2) { $string .= chr(hexdec($hex[$i].$hex[$i+1])); } return $string; } } $encryption = new MCrypt(); echo $encryption->encrypt('123456') . "<br/>"; echo $encryption->decrypt('tpyxISJ83dqEs3uw8bN/+w=='); ?>
PS:關于加密解密感興趣的朋友還可以參考本站在線工具:
密碼安全性在線檢測:
http://tools.jb51.net/password/my_password_safe
高強度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
迅雷、快車、旋風URL加密/解密工具:
http://tools.jb51.net/password/urlrethunder
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《php面向?qū)ο蟪绦蛟O計入門教程》、《PHP數(shù)學運算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設計算法總結(jié)》、《php正則表達式用法總結(jié)》、及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
相關文章
PHP基于imagick擴展實現(xiàn)合成圖片的兩種方法【附imagick擴展下載】
這篇文章主要介紹了PHP基于imagick擴展實現(xiàn)合成圖片的兩種方法,結(jié)合實例形式分析了php使用imagick擴展進行圖片合并的具體操作方法與相關實現(xiàn)技巧,并附帶imagick擴展下載地址與配置方法,需要的朋友可以參考下2017-11-11關于PHPDocument 代碼注釋規(guī)范的總結(jié)
本篇文章是對PHPDocument代碼注釋規(guī)范進行了詳細的總結(jié)與介紹,需要的朋友參考下2013-06-06通過PHP CLI實現(xiàn)簡單的數(shù)據(jù)庫實時監(jiān)控調(diào)度
繼續(xù)CLI模式試驗,這次通過使用之前的“帶延時的死循環(huán)”方法,來實現(xiàn)個簡單的數(shù)據(jù)庫實時監(jiān)控調(diào)度功能。2009-07-07探討:如何使用PHP實現(xiàn)計算兩個日期間隔的年、月、周、日數(shù)
本篇文章是對使用PHP實現(xiàn)計算兩個日期間隔的年、月、周、日數(shù)的方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06