openssl的加密解密

/**
 * openssl 实现
 */
define('KEY', '12f862d21dcfeafb57bckfrrt5yuiopf');
$iv= md5(time(). uniqid(),true);
$str="Hello, world!";
# 加密 md5->true 为16位md5
echo $strEncode= base64_encode(openssl_encrypt($str, 'AES-128-CBC',KEY, OPENSSL_RAW_DATA , $iv));   # AES-256-CBC

/**
 * 解密
 */
echo "
"; echo openssl_decrypt(base64_decode($strEncode), 'AES-128-CBC', KEY, OPENSSL_RAW_DATA, $iv);
1 bit 位    = 1  二进制数据
1 byte 字节  = 8  bit
1 字母 = 1  byte = 8 bit

128位/8=16字节=16字符
192位/8=24字节=24字符
256位/8=32字节=32字符

也就是说KEY 的长度是根据AES-128-CBC 与 AES-256-CBC 变换的。使用 AES-128-CBC 时,key的长度应该为16位,使用 AES-256-CBC时,key的长度应该为32位。

你可能感兴趣的:(AES加密解密,php)