激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP擴展mcrypt實現的AES加密功能示例

PHP擴展mcrypt實現的AES加密功能示例

2019-06-21 14:20five-zh PHP教程

這篇文章主要介紹了PHP擴展mcrypt實現的AES加密功能,結合實例形式分析了php基于mcrypt實現AES加密的相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP擴展mcrypt實現的AES加密功能。分享給大家供大家參考,具體如下:

AES(Advanced Encryption Standard,高級加密標準)是美國聯邦政府采用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。Rijndael是在AES中使用的基本密碼算法。

對于此算法網上流傳有很多php代碼實現的版本,其實php的擴展mcrypt完全支持此加密算法,不必要自己去寫代碼實現。先不說自己寫費時費力(當然你若是想研究此加密算法,那另說),使用php代碼實現的算法效率也不會太高。

mcrypt擴展在php中默認是沒有的,需要自己安裝配置,其方法可以在網上搜索,這里不在詳述。你可以使用以下代碼檢查你的php環境是否支持mcrypt

$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表
$mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表
echo '<xmp>';
print_r($cipher_list);
print_r($mode_list);

若你的環境支持mcrypt,輸出結果應該如下:

Array
(
    [0] => cast-128
    [1] => gost
    [2] => rijndael-128
    [3] => twofish
    [4] => arcfour
    [5] => cast-256
    [6] => loki97
    [7] => rijndael-192
    [8] => saferplus
    [9] => wake
    [10] => blowfish-compat
    [11] => des
    [12] => rijndael-256
    [13] => serpent
    [14] => xtea
    [15] => blowfish
    [16] => enigma
    [17] => rc2
    [18] => tripledes
)
Array
(
    [0] => cbc
    [1] => cfb
    [2] => ctr
    [3] => ecb
    [4] => ncfb
    [5] => nofb
    [6] => ofb
    [7] => stream
)

例如本機采用wampserver環境,直接開啟了mcrypt擴展:

PHP擴展mcrypt實現的AES加密功能示例

其中rijndael-128,rijndael-192,rijndael-256就是AES加密,3種分別是使用不同的數據塊和密鑰長度進行加密。

以下是使用擴展mcrypt實現AES加密的簡單示例

/**
 * 利用mcrypt做AES加密解密
 * @author ts24<[email protected]>
 */
abstract class AES{
 /**
 * 算法,另外還有192和256兩種長度
 */
 const CIPHER = MCRYPT_RIJNDAEL_128;
 /**
 * 模式
 */
 const MODE = MCRYPT_MODE_ECB;
 /**
 * 加密
 * @param string $key 密鑰
 * @param string $str 需加密的字符串
 * @return type
 */
 static public function encode( $key, $str ){
 $iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER,self::MODE),MCRYPT_RAND);
 return mcrypt_encrypt(self::CIPHER, $key, $str, self::MODE, $iv);
 }
 /**
 * 解密
 * @param type $key
 * @param type $str
 * @return type
 */
 static public function decode( $key, $str ){
 $iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER,self::MODE),MCRYPT_RAND);
 return mcrypt_decrypt(self::CIPHER, $key, $str, self::MODE, $iv);
 }
}

使用示例:

$str = '我是明文我是明文我是明文我是明文我是明文dsfdghgasdfasdddddddd';
$key = 'aSGJLGYEWERWRREW4567i8o';
$str1=AES::encode($key, $str);
$str2=AES::decode($key, $str1);
echo '<xmp>';
var_dump($str);
var_dump($str1);
var_dump($str2);
var_dump(rtrim($str2));

輸出結果

PHP擴展mcrypt實現的AES加密功能示例

問題,不知道是什么原因,解密后的字符串(見上圖),末尾還留下有不可見的填充字符,當明文剛好可以分組時則沒有。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产88久久久国产精品免费二区 | 欧美aaaaa一级毛片在线 | 亚洲片在线观看 | 久久成人激情视频 | 中文字幕 亚洲一区 | 亚洲少妇诱惑 | 视频在线色 | 精品国产96亚洲一区二区三区 | 亚洲免费在线视频 | 国产美女爽到喷白浆的 | 国产亚洲精品久久久久久久久 | 午夜视频免费播放 | 日韩在线欧美在线 | 亚洲欧美日韩中文在线 | 爽爽淫人综合网网站 | 新久久久久久 | 亚洲男人一区 | 黄色大片网 | 青草视频在线观看视频 | 久久精品一区视频 | 视频一区二区三区在线观看 | 国产在线观看一区二区三区 | 国产精品久久久久久久av | 一级黄色大片在线观看 | 人禽l交免费视频观看 视频 | av影院在线播放 | 本站只有精品 | 色婷婷综合久久久中文一区二区 | 国产美女爽到喷白浆的 | 免费在线观看国产精品 | 羞羞视频.www在线观看 | 成人在线高清视频 | 国产精品久久久久久影院8一贰佰 | 久久久久久久久久91 | 欧美日韩亚洲国产 | 史上最强炼体老祖动漫在线观看 | 蜜桃久久一区二区三区 | 毛片午夜 | 国产午夜免费视频 | 精品一区二区三区在线观看视频 | 欧美日韩在线播放 |