background image

个初始化向量,简称为

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

//手册里的写法:

代码如下

:

 

    

//指定初始化向量 iv 的大小:

    

$iv_size

 = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

    

//创建初始化向量:

    

$iv

 = mcrypt_create_iv(

$iv_size

, MCRYPT_RAND);

    

//加密密码:

    

$key

 = "123qwe.019860905061x";

    

//原始内容(未加密):

    

$text

 = "My name is Adam Li!";

    echo

 

$text

. "<br>\n";

    

//加密后的内容:

    

$crypttext

 = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 

$key

$text

MCRYPT_MODE_ECB, 

$iv

);

    echo

 

$crypttext

. "\n<br>";

    

//解密已经加密的内容:

    

$str_decrypt

 = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 

$key

$crypttext

MCRYPT_MODE_ECB, 

$iv

);

    echo

 

$str_decrypt

;

 
下面是一个加

/解密请求的例子:

代码如下

:

 

$request_params

 = 

array

(

 

'controller' => 'todo',

 

'action' => 'read',

 

'username' => "bl",

 

'userpass' => "a1"

);

$private_key

 = "28e336ac6c9423d946ba02d19c6a2632";

//encrypt request

$enc_request

 = 

base64_encode

(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 

$private_key