【发布时间】:2015-07-14 23:35:00
【问题描述】:
我正在尝试通过加密 URL 发送,然后在另一端对其进行解码。现在我的调用被传递了,但我的解密返回 null。
这是我的一些代码。
$this->_app_url . '?key=' . $this->_api_key . '&request=' .base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->_api_key, json_encode($url), MCRYPT_MODE_ECB));
url 只是一个标准的 url,key 是一个 32 位的字符串,所以你可以把它想象成任何东西。 $url 变量是一个要发送的东西的数组。因此,当我解密时,我完全拥有该数组。
所以在另一端我正在尝试解码:
$key = $_REQUEST["key"];
$encrypted = $_REQUEST["request"];
$decrypted = json_decode(rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($encrypted), MCRYPT_MODE_ECB)));
这只是返回NULL,我可以回显密钥和请求,我得到了我所期望的,但我无法解密它。
【问题讨论】:
-
你检查
json_last_error了吗? -
你能在
json_decode之前试试utf8_encode吗? -
如果我把它放在解码之前仍然会给出同样的错误。
-
请不要在 ECB 模式下使用
MCRYPT_RIJNDAEL_256。另外,你为什么要传输密钥? -
@ScottArciszewski 你忘了最重要的一个:SSL。既然可以加密整个交互,为什么只加密部分数据?
标签: php encryption