【发布时间】:2012-05-19 20:59:36
【问题描述】:
我尝试使用 php mcrypt TripleDES 对 docx 格式文件进行加密。
当我尝试解密文件时,我收到如下错误。
Office Open XML 文件 file_name 无法打开,因为有 内容有问题。
下面是代码
function Encrypt($source,$key,$iv) {
$cipher = mcrypt_module_open(MCRYPT_3DES, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$result = mcrypt_generic($cipher, $source);
mcrypt_generic_deinit($cipher);
return $result;
}
function Decrypt($source,$key,$iv) {
$cipher = mcrypt_module_open(MCRYPT_3DES, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$result = mdecrypt_generic($cipher, $source);
mcrypt_generic_deinit($cipher);
return $result;
}
任何帮助将不胜感激。
【问题讨论】:
-
Decrypt没有返回任何内容,是错字吗? -
是的,这是一个错字,真的很抱歉...实际上它会返回 $result
-
您是否先尝试不加密,两次返回 $source?排除琐碎的次要错误。缺少 mcrypt_module_close()。
-
不是您的问题的原因,但您误用了 IV。您不应该将它传递给
Encrypt,但Encrypt应该每次都生成一个新的,并将其添加到输出中。Decrypt应该从输出中读取它。 -
您的代码不完整。您没有显示您的 IO 相关代码。请发布显示问题的完整程序。我怀疑该文件在某处被视为文本而不是二进制文件。
标签: php encryption mcrypt