mcrypt加密詳解

2021-09-06 06:04:14 字數 2856 閱讀 1537

安裝和使用php的mcrypt擴充套件

程式設計師們在編寫**程式時,除了要保證**的高效能之外,還有一點是非常重要的,那就是程式的安全性保障。php除了自帶的幾種加密函式外,還有功能更全面的php加密擴充套件庫和。

其中,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_mode_來表示,如下面mcrypt應用的例子:

des演算法表示為mcrypt_des;

ecb模式表示為mcrypt_mode_ecb;

php加密擴充套件庫mcrypt應用

先看乙個例子,了解mcrypt的工作流程,再來看看部分流程使用的函式:

//加密內容  //金鑰  //密碼型別  //密碼模式 

$str = "hello";

$key = "123";

$cipher = mcrypt_des;

$modes = mcrypt_mode_ecb;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),mcrypt_rand);//初始化向量 

$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv);  //加密函式 

echo "加密密文:".$str_encrypt." "; 

$str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv);  //解密函式 

echo "還原:".$str_decrypt; 

執行結果:

加密明文:hello

加密密文: c|b�u�|@

還原:hello

<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必須一一對應,否則資料不能被還原。

libmcrypt-2.5.8.tar.gz

mhash-0.9.9.tar.gz

mcrypt-2.6.8.tar.gz

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

現在你應該已經把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

然後重啟一下,這樣我們就已經將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

mcrypt加密詳解

安裝和使用php的mcrypt擴充套件 程式設計師們在編寫 程式時,除了要保證 的高效能之外,還有一點是非常重要的,那就是程式的安全性保障。php除了自帶的幾種加密函式外,還有功能更全面的php加密擴充套件庫和。其中,mcrypt擴充套件庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。p...

Mcrypt加密解密亂碼處理

之前要用到 mcrypt 進行加解密,在網上搜了一段現成的 拿來用,使用後發現出現亂碼,百尋不得答案,自己不斷測試修改,終於發現問題。網上的 encrypt function function mc encrypt encrypt,mc key decrypt function function m...

PHP加密擴充套件庫Mcrypt

php程式設計師們在編寫 程式時,除了要保證 的高效能之外,還有一點是非常重要的,那就是程式的安全性保障。php除了自帶的幾種加密函式外,還有功能更全面的php加密擴充套件庫mcrypt和mhash。其中,mcrypt擴充套件庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。1.php加密...