我正在使用 128 位的 AES ALgo 和 CBC 密码模式加密,下面是代码:
$cc = 'my secret text';
$key = '3aa22e01c04c7059778c54d122b0273689fba00f4a166a66d15f7ba6a8ba8743';
$iv = '1234567890123456';
$length = strlen($cc);
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'','cbc','');
mcrypt_generic_init($cipher, $key, $iv);
$encrypted = base64_encode(mcrypt_generic($cipher,$cc));
mcrypt_generic_deinit($cipher);
mcrypt_generic_init($cipher, $key, $iv);
$decrypted = mdecrypt_generic($cipher,base64_decode($encrypted));
mcrypt_generic_deinit($cipher);
echo "encrypted: " . $encrypted;
echo "\n";
echo "decrypted: " . substr($decrypted, 0, $length) . "\n";
但这给了我一个警告,输出为:
警告:mcrypt_generic_init():密钥大小太大;提供的长度:64,最大值:第 10 行 /var/www/cipher.php 中的 32 警告:mcrypt_generic_init():密钥大小太大;提供的长度:64,最大值:第 14 行 /var/www/cipher.php 中的 32 加密:vM/XVYSjs/QApdCUEQ8bdQ== 解密:我的秘密文本
现在有人可以指导我为什么我面临尺寸问题以及如何在不改变密钥的情况下消除尺寸问题......