PHP mcrypt加密擴充套件使用總結

2021-08-09 10:17:59 字數 4341 閱讀 4109

在開發中,很多時候我們在前後端互動中需要對一些敏感資料進行一定的加密。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

<?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 ?>

三、實現乙個aes加密類

1

<?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 }

ps.使用資料加密的好處:資料在前後臺之間進行傳輸的是乙個加密後的字串,可以防止資料被爬蟲抓包,避免敏感資料的洩露,也可以有效防止猜測出資料項對資料操作介面進行惡意請求

一、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...