【发布时间】:2014-01-12 21:37:18
【问题描述】:
我正在尝试解密文件,我可以使用以下字符串在终端中使用 OpenSSL 对其进行解密。
openssl -enc -d -aes-192-ecb -in file.crypt -out file -K 0123456789abcdef -iv 0
但是,我想用 PHP 解密这个文件。我有以下代码:
$file = file_get_contents('file.crypt');
$key = 0123456789abcdef;
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_192, $key, $file, MCRYPT_MODE_ECB);
print_r($data);
显然我遗漏了一些东西,因为 PHP 脚本正在返回数据,而不是纯文本。
我曾尝试使用 MCRYPT_RIJNDAEL_128,但没有成功。如果您能看到我做错了什么,请告诉我。提前致谢。
更新
我已使用以下方法成功解密了我的文件:
$key = pack('H*', '0123456789abcdef'); //In >= PHP 5.4 you can use hex2bin() I think.
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $file, MCRYPT_MODE_ECB);
【问题讨论】:
-
$file是否真的包含文件的加密内容? -
你能说明你是如何加密文件的,以便我们重现吗?
-
如果您尝试使用 0 作为 mcrypt_decrypt 的第 5 个参数会怎样?
mcrypt_decrypt(MCRYPT_RIJNDAEL_192, $key, $file, MCRYPT_MODE_ECB, 0); -
@Mike:file.crypt 是一个加密的 sqlite 数据库。使用 0 作为第五个参数会导致 mcrypt_decrypt 函数返回 false。
-
@Drew:我没有加密文件,它是由我没有白盒访问权限的应用程序加密的。
标签: php encryption openssl