个初始化向量,简称为
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
,