php mcrypt

"mcrypt_en mcrypt_en crypt

mcrypt簡單介紹

PHP程式設計師們在編寫代碼程式時,除了要保證代碼的高性能之外,還有一點是非常重要的,那就是程式的安全性保障。PHP除了自帶的幾種加密函式外,還有功能更全面的PHP加密擴展庫McryptMhash
其中,Mcrypt擴展庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。
mcrypt 是 php 裡面重要的加密支持擴展庫,linux環境下:該庫在默認情況下不開啟。window環境下:PHP>=5.3,默認開啟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_MODE_來表示,如下面Mcrypt套用的

例子

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

< ?php
$str = "我的名字是?一般人我不告訴他!"; //加密內容
$key = "key:111"; //密鑰
$cipher = MCRYPT_DES; //密碼類型
$modes = MCRYPT_MODE_ECB; //密碼模式
$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;
?>

運行結果:
加密明文:我的名字是?一般人我不告訴他!
加密密文: 鋶盌?]鷽?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必須一一對應,否則數據不能被還原

安裝

windows

windows下默認已經打包好所需要的庫 只要編輯php.ini 把對應的
mhash mcrypt 選項前的注釋去掉 重啟apache就可以了

linux

Linux版的PHP自身不打包該庫,需要自行到官方網站下載代碼進行編譯安裝
需要下載以下的包:
libmcrypt-版本號.tar.gz
mhash-版本號.tar.gz
mcrypt-版本號.tar.gz
其中“版本號”為對應版本號
# 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就可以了

相關詞條

熱門詞條

聯絡我們