php AES加密

2013-06-01 11:03  3900人阅读  评论 (0)

因为iv每次都是不固定的,所以iv也必须每次保存,否则无法解密. 也可将iv和加密后的内容一起保存,因为算法与模式固定所得出iv长度也是固定的.

/*
MCRYPT_RIJNDAEL_128: rijndael-128
MCRYPT_MODE_CBC: cbc
iv_size: 16
MCRYPT_DEV_URANDOM: 1
*/

$algorithm = MCRYPT_RIJNDAEL_128; // 加密算法
$mode = MCRYPT_MODE_CBC; // 加密模式
$key = 'my text'; // 密钥
$data = 'my site is http://www.dotcoo.com/'; // 原始内容

// 生成iv
$iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode), MCRYPT_DEV_URANDOM);
echo $iv, "<br>";

// 加密
$encrypted_data = mcrypt_encrypt($algorithm, $key, $data, $mode, $iv);
$plain_text = base64_encode($encrypted_data);
echo $plain_text, "<br>";

// 解密
$encrypted_data = base64_decode($plain_text);
$decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
echo $decoded, "<br>";
豫ICP备09035262号-1