AES-128-CBC 与 LUA、PYTHON 和 PHP 的工作方式不同

AES-128-CBC don't work on the same way with LUA, PYTHON and PHP

我有一个带 Nodemcu 的 ESP8266 和一个 AM2320 传感器。

我将 JSON 格式的纯文本温度和湿度发送到我的 HTTP 服务器,用于使用 PHP[ 收集数据=53=] 和 SQLITE3.

这是正确的。

但我想用 AES-CBC

加密我的数据

我使用 crypto.encrypt() 函数和 'AES-CBC' 方法对 ESP8266 上的措施进行加密,如下例所示:

https://nodemcu-firmware.readthedocs.io/en/latest/en/modules/crypto/#cryptoencrypt

我使用 Python 3 .

在我的 PC 上进行了相同的加密

结果字符串与 ESP8266 上的结果匹配 LUA 5.1

接下来,我在我的 PC 上进行相同的加密,但使用 PHP 7.1

唉,结果字符串与之前的结果不匹配。 我在 openssl_encrypt() 函数上使用 'AES-128-CBC' 方法。

我把三种语言的脚本放在 Github.com 的要点中:

https://gist.github.com/bazooka07/bed368d313e218fcba332cb2127c70b1

PHP 有错吗?

你能帮帮我吗?

我在 PHP 中用 aes-256-cbc 代替 aes-128-cbc 试过你的代码,它给出了相同的输出。将 PHP 加密方法更改为 aes-256-cbc 应该可以解决问题..

当要加密的消息长度不与 16 个字符的倍数相匹配时,我对我的要点进行了一些修复。