我有一个字符串,说"My secret text“。
它是使用CRYPT_AES256加密的(使用的方法是 function )。
键(32个字节)是,比方说,"1234567890ABCDEFGHIJKLMNOPQRSTUV".
MQL4函数不提供输入IV的可能性,我也不知道是否使用了CBC-mode或其他什么东西。
如何使用PHP返回“我的秘密文本”?
(我得说,试过了
openssl_decrypt(...)
和
mcrypt_decrypt(...),
但没有成功。
)
更新:我从MQ获得了答案:
使用的模式是ECB.
IV确实没有被使用。
所以,我的代码是:
<?php
$hexMessage = $_POST["enc_data"]; //this is in hex form, I used ArrayToHex before sending
$encryptedMessage = hex2bin($hexMessage);
$encryptionMethod = "AES-256-ECB";
$secretKey = "1234567890ABCDEFGHIJKLMNOPQRSTUV";
$decryptedMessage = openssl_decrypt($encryptedMessage, $encryptionMethod, $secretKey);
echo "Decrypted: $decryptedMessage";
?>没有结果(即使我使用OPENSSL_RAW_DATA作为选项)。
Update2:
使用mcrypt_decrypt(...)可以工作。但是,我很好奇,为什么 openssl_decrypt(...) 不工作(结果什么都没有)?
发布于 2017-03-08 14:46:26
以下是两种不同的解密方法:
$decryptedMessage = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $secretKey, $encryptedMessage, MCRYPT_MODE_ECB);
$decryptedMessage = openssl_decrypt($encryptedMessage, "AES-256-ECB", $secretKey, OPENSSL_ZERO_PADDING|OPENSSL_RAW_DATA);https://stackoverflow.com/questions/41086192
复制相似问题