gpt4 book ai didi

PHP openssl_decrypt : Partial decryption works even with different IV?

转载 作者:搜寻专家 更新时间:2023-10-31 20:37:28 24 4
gpt4 key购买 nike

给定以下待加密电子邮件和此(弱)加密 key :

$source="example.email.from.someone@my-office.co.uk";
$pass="Somepassword...";

我想生成一个比较好的加密字符串:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$method="AES-128-CBC";

$encrypted=openssl_encrypt($source, $method, $pass, true, $iv);

如果我尝试解密它工作正常:

$decrypted=openssl_decrypt ($encrypted, $method, $pass, true, $iv);
echo $decrypted;
// example.email.from.someone@my-office.co.uk

但是当我尝试用不同的 $iv (!) 解密时,我希望得到一个无意义的结果,但我却得到了:

$iv2 = "tralala1tralala2";
$decrypted=openssl_decrypt ($encrypted, $method, $pass, true, $iv2);
echo $decrypted;
// m~Œ=¢ì •wêàdÏŠom.someone@my-office.co.uk

所以基本上最后 26 个字符即使使用不同的 $iv(“om.someone@my-office.co.uk”)也能解密。有人可以解释为什么会这样吗? (即使我再次更改 $iv,也会解密相同的 26 个字符)

我从最佳答案here得到了这个加密方法

最佳答案

要理解这一点,您需要了解 block 密码的工作原理。

https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

通常(这包括 AES/Rijndael),每个 block 用于影响下一个 block 的解密。 IV 仅用于影响第一个 block 的解密(之前的 block 不存在)。所以是的,一个单独的 IV 将 - 取决于所使用的确切算法 - 只会影响密文第一 block 的解密。这就是您所看到的。

关于PHP openssl_decrypt : Partial decryption works even with different IV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com