【发布时间】:2016-03-17 16:34:31
【问题描述】:
我正在尝试将数据从我的 Android 应用程序发送到运行 PHP 5.5 的 Apache2 服务器,同时在双方都进行 AES-128 加密/解密。
奇怪的是,当我在 Eclipse 上运行 java 代码来加密数据(作为测试)并使用 Netbeans 上的 PHP 将加密结果解密时,它工作得很好。将代码传输到 Android 也会得到相同的加密结果,但服务器上的解密函数不会返回任何结果,它只是给出一个空值,我使用的代码与我在 Netbeans 上使用的完全相同。
这是代码
if(isset($_POST['param']))
{
$param = $_POST['param'];
$param=decrypt($param, "57238004e784498bbc2f8bf984565090");
}
else
echo "No post Request Received";
function decrypt($encrypted, $key) {
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, hex2bin($key),hex2bin($encrypted), MCRYPT_MODE_ECB);
echo $decrypted;
$padSize = ord(substr($decrypted, -1));
return substr($decrypted, 0, $padSize*-1);
}
echo $decrypted 给出一个 null 并且返回。
示例: 密码:269B3F5A2208C533AACB51243CFB9CFB 解密为:28
有人知道问题出在哪里吗?
【问题讨论】:
-
wat 是解密函数的返回值
-
基本调试:
var_dump($decrypted)。如果它是布尔假,那么它根本没有解密。 -
var_dump 返回 false。没有返回值。
-
1.您已发布您的加密密钥。您现在可能应该使用不同的。 2. 你能发布一个示例加密字符串以及它应该解密的内容吗? 3. 欧洲央行糟透了。使用 CBC。
-
除了安全问题(ECB 模式?没有 MAC?)之外,除非您包含要传递给应用程序的示例密文,否则我们无法诊断此问题。
标签: php encryption aes mcrypt