PHP加密擴充庫—Mcrypt擴充庫執行個體用法

來源:互聯網
上載者:User
PHP加密擴充庫—Mcrypt擴充庫

在本文開始本文開始之前,我們先來瞭解一下什麼是PHP加密擴充庫:PHP中不但幾種加密函數(md5,crypt,sha1),在此之外,PHP中還有一些功能比較全面的加密擴充庫!就好比php本來不支援操作某種功能 ,但在新版本想對它提供支援,就以擴充的方式來提供,這樣,我們在配置php時,如果我們不用此功能,我們就可以讓php不載入他.從而節省伺服器資源.提供其效能。

在以前的三篇文章《PHP加密函數—crypt()函數加密》、《PHP加密函數—md5()函數加密》以及《PHP加密函數—sha1()函數加密》中介紹了PHP加密函數,那麼接下來我們要給大家介紹PHP加密擴充庫!

PHP加密擴充庫有兩種,Mcrypt 和 Mhash兩種擴充庫,這篇文章我們先介紹 Mcrypt!

1.Mcrypt庫安裝

mcypt是一個功能十分強大的密碼編譯演算法擴充庫。在標準的PHP安裝過程中並沒有把Mcrypt安裝上,但PHP的主目錄下包含了libmcrypt.dll檔案,所以我們只用將PHP設定檔中的這行extension=php_mcrypt.dll前面的分號“;”去掉,然後重啟伺服器就可以使用這個擴充庫了。

2.Mcrypt庫常量

mcrypt庫支援 20多種的密碼編譯演算法,以及 8 種加密模式,我們可以直接使用函數mcrypt_list_algorithms() 和 mcrypt_list_modes()來查看,具體代碼如下:

<?php$atr = mcrypt_list_algorithms();  //函數返回 Mcrypt支援的密碼編譯演算法數組echo "支援演算法有:";foreach ($atr as $atr_value){    echo "<br>".$atr_value;}$arr = mcrypt_list_modes();     //函數返回 Mcrypt支援的加密模式數組echo "<p>支援加密模式有:";foreach ($arr as $arr_value){    echo "<br>".$arr_value;}?>

輸出結果為:

注意:這些演算法和模式在實際應用中需要用常量來表示,寫的時候分別加上首碼:MCRYPT_和MCRYPT_MODE_來表示,執行個體:

TWOFISH演算法表示為:MCRYPT_TWOFISH。

CBC加密模式表示為: MCRYPT_MODE_CBC。

3.Mcrypt應用

使用 Mcrypt 進行加密和解密不想使用md5(),sha1()等函數,直接調用就可以了。為了讓大家能清楚的瞭解Mcrypt的工作流程,下面我們直接用代碼介紹,具體代碼如下:

<?phpheader("Content-Type:text/html; charset=utf-8");$str = "被加密的內容:PHH中文網www.php.cn";  //加密文本$key = "key:111";                               //密鑰$cipher = MCRYPT_DES;                           //密碼類型$modes = MCRYPT_MODE_ECB;                      //Cipher 模式$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND); //初始化向量echo "加密前:".$str."<p>";$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv);       //加密函數echo "加密後:".$str_encrypt."<p>";$str_decrypt =mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv);  //解密函數echo "還原:".$str_decrypt."<p>";?>

輸出結果為:

下面我們介紹上面執行個體中出現的幾個函數:

1.mcrypt_create_iv:

文法格式如下:

string mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] )

使用 Mcrypt進行資料加密。解密之前,首先要建立一個初始化向量(簡稱 iv)。建立初始化向量需要兩個參數:size 指定了 iv 的大小,source 為 iv 的源。source 可以取如下值:

  • MCRYPT_RAND:系統隨機數。

  • MCRYPT_DEV_RANDOM:讀取目錄/dev/random 中的資料(UNIX系統)。

  • MCRYPT_DEV_URANDOM:讀取目錄/dev/urandom中的資料(UNIX系統)。

2.mcrypt_get_iv_size:

文法格式:

int mcrypt_get_iv_size ( string $cipher , string $mode )

該函數返回的初始化向量(iv)的大小。函數中的兩個參數是前面剛介紹的密碼編譯演算法(cipher)和加密模式(mode)。

3.mcrypt_encrypt:

文法格式如下:

string mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

初始化向量後,既可以使用mcrypt_encrypt()加密函數對資料進行加密,該函數的 5 個參數的含義分別如下:

(1)cipher:密碼編譯演算法。上例中為變數$cipher 這裡的密碼編譯演算法可以和初始化向量中的密碼編譯演算法不一樣。

(2)key: 密鑰。上例中的變數$key。

(3)mode: 加密模式。

(4)iv: 初始化向量。

4.mcrypt_decrypt

文法格式如下:

string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

解密函數 mcrypt_decrypt()和加密函數 mcrypt_encrypt()的參數幾乎是一樣的。唯一不一樣的就是參數data,這裡data 為需要解密的資料,而不是未經處理資料。

說明:加密函數和解密函數中的 cipher,key以及mode 參數必須要一致,否則資料不會被還原。

下一篇我們繼續介紹PHP加密擴充庫:Mhash擴充庫,具體請閱讀《PHP加密擴充庫—Mhash擴充庫》!

【相關推薦】

1. 相關專題推薦:《PHP加密函數》

2.PHP加密擴充庫-Mhash擴充庫執行個體用法詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.