在開發中,很多時候我們在前後端互動中需要對一些敏感資料進行一定的加密。php中有提供了mcrypt的這樣乙個加密擴充套件實現對資料的加密解密。
一、mcrypt擴充套件的安裝
在低版本的php中需要在配置檔案php.ini中顯式新增對擴充套件的引用,同時要保證擴充套件引用目錄中有相應的擴充套件檔案;在高版本的php中,windows下似乎預設開啟了mcrypt的擴充套件,既不需要在配置檔案php.ini中做配置,在擴充套件引用目錄中也沒有看到相應的擴充套件檔案,在linux下則需要安裝對應的mcrypt.so擴充套件。
mcrypt擴充套件支援多種加密演算法和模式,可以使用mcrypt_list_algorithms()和mcrypt_list_modes()來顯示支援的加密演算法和加密模式。
二、mcrypt擴充套件的使用
加密
1、開啟加密演算法和模式
mcrypt_module_open('tripledes', '', ecb'', '');
第乙個引數是使用的加密演算法的名稱,對應mcrypt_list_algorithms()輸出的加密演算法;第三個引數對應加密的模式,對應mcrypt_list_modes()輸出的支援加密模式。
2、建立初始化向量
mcrypt_create_iv (mcrypt_enc_get_iv_size($td), mcrypt_rand);
ps.在window平台下,第二個引數固定使用mcrypt_rand
3、初始化加密緩衝區
mcrypt_generic_init($td, $key, $iv);
$td為返回的加密描述符,$key為加密金鑰,$iv為初始化向量
4、資料加密
$encrypted_data = mcrypt_generic($td, $data);
$td為加密描述符,$data為加密前的資料,資料加密函式返回加密後的字串。
5、結束加密,執行清理工作
mcrypt_generic_deinit($td);
解密
1、開啟解密演算法和模式,同上,得到$td解密描述符
2、建立初始化向量,同上,得到$iv初始化向量
3、初始化解密緩衝區
mcrypt_generic_init($td,$key, $iv);
4、資料解密
$decrypted_data = mdecrypt_generic($td, $encrypted_data);
ps.$encrypted_data為解密前的密文,$decrypted_data為解密後的明文。
演示demo:
1三、實現乙個aes加密類<?php2
/*開啟加密演算法和模式 */3
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');45/*
建立初始向量,並且檢測金鑰長度。
6* windows 平台請使用 mcrypt_rand。 */7
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), mcrypt_dev_random);8
$ks = mcrypt_enc_get_key_size($td);9
10/*
建立金鑰
*/11
$key = substr(md5('very secret key'), 0, $ks);12
13/*
初始化加密
*/14 mcrypt_generic_init($td, $key, $iv);15
16/*
加密資料
*/17
$encrypted = mcrypt_generic($td, 'this is very important data');18
19/*
結束加密,執行清理工作
*/20 mcrypt_generic_deinit($td);21
22/*
初始化解密模組
*/23 mcrypt_generic_init($td, $key, $iv);24
25/*
解密資料
*/26
$decrypted = mdecrypt_generic($td, $encrypted);27
28/*
結束解密,執行清理工作,並且關閉模組
*/29 mcrypt_generic_deinit($td);30 mcrypt_module_close($td);31
32/*
顯示文字
*/33
echo
trim($decrypted) . "\n";34 ?>
1ps.使用資料加密的好處:資料在前後臺之間進行傳輸的是乙個加密後的字串,可以防止資料被爬蟲抓包,避免敏感資料的洩露,也可以有效防止猜測出資料項對資料操作介面進行惡意請求<?php2 /**
3* php aes加密解密類
4* created by phpstorm.
5* user: ahao
6* date: 2016/11/3
7* time: 0:038*/
9class pubencryptcatch (exception
$e)51 }52
53/**54
* aes解密
55* @param $encrypted 密文
56* @param null $key 解密金鑰
57* @return array|string
58*/
59public
static
function aesdecrypt($encrypted, $key = null)catch (exception
$e)85 }86
8788/**
89* 擷取字串
90* @param $string 被擷取的字串
91* @param $start 起始位置
92* @param $length 擷取長度
93* @return string 擷取到的字串
94*/
95private
static
function
substr($string, $start, $length)96 99 }
一、mcrypt擴充套件的使用
加密
1、開啟加密演算法和模式
mcrypt_module_open('tripledes', '', ecb'', '');
第乙個引數是使用的加密演算法的名稱,對應mcrypt_list_algorithms()輸出的加密演算法;第三個引數對應加密的模式,對應mcrypt_list_modes()輸出的支援加密模式。
2、建立初始化向量
mcrypt_create_iv (mcrypt_enc_get_iv_size($td), mcrypt_rand);
ps.在window平台下,第二個引數固定使用mcrypt_rand
3、初始化加密緩衝區
mcrypt_generic_init($td, $key, $iv);
$td為返回的加密描述符,$key為加密金鑰,$iv為初始化向量
4、資料加密
$encrypted_data = mcrypt_generic($td, $data);
$td為加密描述符,$data為加密前的資料,資料加密函式返回加密後的字串。
5、結束加密,執行清理工作
mcrypt_generic_deinit($td);
解密
1、開啟解密演算法和模式,同上,得到$td解密描述符
2、建立初始化向量,同上,得到$iv初始化向量
3、初始化解密緩衝區
mcrypt_generic_init($td,$key, $iv);
4、資料解密
$decrypted_data = mdecrypt_generic($td, $encrypted_data);
ps.$encrypted_data為解密前的密文,$decrypted_data為解密後的明文。
PHP mcrypt加密擴充套件使用總結
在開發中,很多時候我們在前後端互動中需要對一些敏感資料進行一定的加密。php中有提供了mcrypt的這樣乙個加密擴充套件實現對資料的加密解密。一 mcrypt擴充套件的安裝 在低版本的php中需要在配置檔案php.ini中顯式新增對擴充套件的引用,同時要保證擴充套件引用目錄中有相應的擴充套件檔案 在...
php mcrypt 加密解密
mcrypt簡單介紹 php程式設計師們在編寫 程式時,除了要保證 的高效能之外,還有一點是非常重要的,那就是程式的安全性保障。php除了自帶的幾種加密函式外,還有功能更全面的php加密擴充套件庫mcrypt和mhash。其中,mcrypt擴充套件庫可以實現加密解密功能,就是既能將明文加密,也可以密...
php使用mcript擴充套件實現對稱加密
1.對稱加密主要利用相同的金鑰來實現,而非對稱加密利用公鑰和私鑰來加密,比較而言對稱加密速度快,但是安全性要低 為什麼使用base64 encode 主要是用於傳參,直接加密完成後不是我們能理解的字串,也就是大家所說的亂碼 2.進行加密 使用mcript擴充套件,des型別 關鍵點在於 key ke...