【问题标题】:PHP AES 128 bit CBC Encryption gives a size warningPHP AES 128 位 CBC 加密给出大小警告
【发布时间】:2013-06-09 21:16:15
【问题描述】:

我正在使用 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,最大: 32 在 /var/www/cipher.php 第 14 行加密: vM/XVYSjs/QApdCUEQ8bdQ== 解密:我的密文

现在有人可以指导我为什么我面临尺寸问题以及如何在不改变密钥的情况下消除尺寸问题...

【问题讨论】:

  • 您能否指出使用键值的前 16 个字节是否有帮助?

标签: php aes encryption-symmetric cbc-mode


【解决方案1】:

您正在进行 128 位加密,但您的密钥长度为 64 个十六进制字符,即 265 位。

要么您需要进行 256 位加密,要么您的密钥需要缩小一半。

【讨论】:

  • 您是否无法使用较小的密钥...因为不允许尝试将该密钥用于其他一些在线 AES 加密器。
  • 它似乎可以解密,所以使用前 32 个字符(16 个十六进制字节)应该可以解决问题。
【解决方案2】:

我修改了你的代码,它运行良好, 请检查我的更改,好的

$data_to_encrypt = "2~1~000024~0910~20130723092446~T~00002000~USD~F~375019001012120~0~0~00000000000~";
$key128 = "abcdef0123456789abcdef0123456789";
$iv = "0000000000000000";

$cc = $data_to_encrypt;
$key = $key128;
$iv =  $iv;
$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 "<br/>";
echo "length:".strlen($encrypted);
echo "<br/>";
echo "decrypted: " . substr($decrypted, 0, $length);

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 2020-04-15
    • 1970-01-01
    • 2017-03-27
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多