php openssl iv,PHP openssl

编程入门 行业动态 更新时间:2024-10-08 00:31:25

php <a href=https://www.elefans.com/category/jswz/34/1769523.html style=openssl iv,PHP openssl"/>

php openssl iv,PHP openssl

给定以下要加密的电子邮件以及此(弱)加密密钥:

$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

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

我已经从最佳答案here得到了这种加密方法

解决方法:

要了解这一点,您将需要研究块密码的工作方式.

通常(包括AES / Rijndael),每个块都用于影响下一个块的解密. IV仅用于影响第一个块的解密(不存在先前的块).因此,是的,根据所使用的确切算法,单独的IV仅会影响密文的第一块的解密.这就是您所看到的.

标签:encryption,php

来源: .html

更多推荐

php openssl iv,PHP openssl

本文发布于:2024-02-13 19:24:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1760220.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:openssl   php   PHP   iv

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!