用openssl代替mcrypt加密解密

作者: harde 分类: PHP 发布时间: 2017-12-01 13:46

最近在做钉钉接入的时候,遇到了一些坑。
而mcrypt这个算是最大的了。

问题是这样的。
在钉钉做事件回调的时候,加密发送到钉钉是成功的,但是钉钉发送来的数据解密却是失败的。

Google、百度一堆。解决方案无非以下:

mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);
//更换为
openssl_decrypt($string, 'AES-256-ECB', $key);

但是问题并不是这么简单。
解密依旧失败。
因为在stack overflow上看到过一句话,说MCRYPT_RIJNDAEL_128里的128与 AES-128-CBC里的128并不是一回事,于是,去重新恶补了下AES。。。[1]
在了解了AES之后,依旧没有发现百度出来的结果有什么不对。
于是乎觉得问题还是在openssl上。又经过一轮搜索后,终于对了。

openssl_decrypt($data,'AES-256-CBC', $key ,OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);

看到OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING了么,重点就在这里。

引用:

[1]维基百科.高级加密标准

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注