php利用mcrypt.so扩展,如何解密AES-CBC模式数据?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文中的内容,涉及到cbc
加密算法,略显高大上。在mcrypt.so
扩展中,有很多的新的加密算法。本文中涉及的CBC
模式,仅仅是其中的一种模式。不过,这些相关算法,并不是比较常用。所以,苏南大叔也就是讲述讲述简单的应用。文末链接中,有php
官方的更多函数说明。这个AES-CBC
加密,在key
和iv
一致的前提下,每次加密结果都是一样的。这个和RSA
加密是不一致的。

本文测试环境:mac
/php72
/mcrypt
。
废弃的函数
值得注意的是:mcrypt.so
中的大量函数,已经是被php
官方废弃的状态。在php73
中,已经全面不支持mcrypt
系列函数了。所以,本文的应用范围是有限的。对于php7
以上如果加载了mcrypt.so
后,再进行使用相关mcrypt
系列函数的话。有可能会有下面的警告提示信息:
所以,在本文的范例中,大量使用了@
操作符来抑制警告信息的输出。如果您想核对一下结果的话,本文的解密结果都是文本"苏南大叔"。
安装mcrypt
本文中的代码如果要顺利执行,是需要个mcrypt.so
扩展的。所以,请确定您的php
开启了mcrypt.so
扩展。下面的两篇文章,是演示如何编译安装mcrypt
扩展的。
centos
系统:https://newsn.net/say/centos-php-mcrypt.htmlmac
系统:https://newsn.net/say/mac-php-mcrypt.html
解密方案一(mdecrypt_generic)(推荐)
基本数据定义,这里定义个要解密的数据,还有对应的key
和iv
。
解密代码:
解密方案二(mcrypt_decrypt)
基础数据:
解密方案:
使用mcrypt_decrypt
的时候,对于$key
和$iv
长度都有限制。否则,您就可能会看到如下提示:
相关链接
总结
本文中苏南大叔留下了两个伏笔:
- 由于
mcrypt.so
扩展,已经被废弃了。那么,是否有替代方案呢?这里,苏南大叔留下个伏笔。 - 本文也仅仅讲述
CBC
模式的解密,没有讲述加密。那么CBC
模式如何加密呢?这是另外的一个伏笔。 - https://newsn.net/tag/cbc/


