安裝和使用php的mcrypt擴展


 

安裝和使用php的mcrypt擴展 

 

PHP程序員們在編寫代碼程序時,除了要保證代碼的高性能之外,還有一點是非常重要的,那就是程序的安全性保障。PHP除了自帶的幾種加密函數外,還有功能更全面的PHP加密擴展庫Mcrypt和Mhash。

 

其中,Mcrypt擴展庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。PHP加密擴展庫Mcrypt的算法和加密模式

Mcrypt庫支持20多種加密算法和8種加密模式,具體可以通過函數mcrypt_list_algorithms()和mcrypt_list_modes()來顯示,結果如下:

Mcrypt支持的算法有:cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes

Mcrypt支持的加密模式有:cbc cfb ctr ecb ncfb nofb ofb stream

這些算法和模式在應用中要以常量來表示,寫的時候加上前綴MCRYPT_和MCRYPT_來表示,如下面Mcrypt應用的例子:

DES算法表示為MCRYPT_DES;
ECB模式表示為MCRYPT_MODE_ECB;

PHP加密擴展庫Mcrypt應用

先看一個例子,了解Mcrypt的工作流程,再來看看部分流程使用的函數:

  1. <?php  
  2. $str = "我的名字是?一般人我不告訴他!";   
  3. //加密內容  
  4. $key = "key:111";   
  5. //密鑰  
  6. $cipher = MCRYPT_DES;  
  7. //密碼類型  
  8. $modes = MCRYPT_MODE_ECB;  
  9. //密碼模式  
  10. $iv = mcrypt_create_iv(mcrypt_get_iv_size
    ($cipher,$modes),MCRYPT_RAND);//初始化向量  
  11. echo "加密明文:".$str."<p>";  
  12. $str_encrypt = mcrypt_encrypt($cipher,
    $key,$str,$modes,$iv);  
  13. //加密函數  
  14. echo "加密密文:".$str_encrypt." <p>";  
  15. $str_decrypt = mcrypt_decrypt($cipher,
    $key,$str_encrypt,$modes,$iv);  
  16. //解密函數  
  17. echo "還原:".$str_decrypt;  
  18. ?> 

運行結果:

加密明文:我的名字是?一般人我不告訴他!
加密密文: 鋶盌?]鷽?q攦軄L 笑 郺葄"簻 黙
還原:我的名字是?一般人我不告訴他!

<1>由例子中可看到,使用PHP加密擴展庫Mcrypt對數據加密和解密之前,首先創建了一個初始化向量,簡稱為iv。由 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);可見創建初始化向 量需要兩個參數:size指定了iv的大小;source為iv的源,其中值MCRYPT_RAND為系統隨機數。

<2>函數mcrypt_get_iv_size($cipher,$modes)返回初始化向量大小,參數cipher和mode分別指算法和加 密模式。

<3>加密函數$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); 該函數的5個參數分 別如下:cipher——加密算法、key——密鑰、data(str)——需要加密的數據、mode——算法模式、 iv——初始化向量

<4>解密函數 mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); 該函數和加密函數的參數幾乎 一樣,唯一不同的是data,也就是說data為需要解密的數據$str_encrypt,而不是原始數據$str。

注:加密和解密函數中的參數cipher、key和mode必須一一對應,否則數據不能被還原。

安裝
此安裝主要針對Linux系統

首先要下載三個軟件,分別是

libmcrypt-2.5.8.tar.gz

下載地址: http://sourceforge.net/project/showfiles.php?group_id=87941&package_id=91774&release_id=487459

mhash-0.9.9.tar.gz

下載地址: http://sourceforge.net/project/showfiles.php?group_id=4286&package_id=4300&release_id=645636

mcrypt-2.6.8.tar.gz

下載地址: http://sourceforge.net/project/showfiles.php?group_id=87941&package_id=91948&release_id=642101

【幾篇文章和在一起的,下面特別重視libmcrypt,但是我發現安裝mcrypt時候需要解決對libmcrypt還有mhash的依賴,這些好解決,不行yum一下就可以了】

# tar -xvf libmcrypt-X.X.X.tar
# cd libmcrypt-X.X.X
# ./configure

現在你應該已經把libmcrypt作為一個共享組件了(但不是一個PHP的共享組件)。運行命令:

# ldconfig

它將使得共享對象可以在C/C++開發中被使用。下面把mcrypt動態組件編譯到PHP中。首先,你需要PHP-devel 包中包含的 'phpize‘ 命令。

當你當前運行的PHP中已經有了 PHP-devel 后,輸入:

# cd ext/mcrypt
# phpize
# aclocal
# ./configure
# make clean
# make
# make install

現在php的安裝目錄下面應該有了mcrypt.so 的文件,在 /etc/php.ini 添加:

extension=mcrypt.so

然后重啟一下apache,這樣我們就已經將mcrypt功能安裝成功了。

特別注意:

1、phpize需在解壓后的源碼包下執行,執行后生成configure腳本

2、運行./configure時,如果提示

configure: error: Cannot find php-config. Please use --with-php-config=PATH
請使用:

./configure --with-php-config=/php-install-path/bin/php-config #而不是使用php.ini


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM