【问题标题】:Issue with encrypt and decrypt a word docx file in php在php中加密和解密word docx文件的问题
【发布时间】: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


【解决方案1】:

我已经等待解决方案超过 4 个月了。 最后我在谷歌找到了一些有价值的答案。现在我已经使用下面的链接修复了它。

http://www.howwhywhat.in/how-to-implement-common-file-encryption-and-decryption-between-c-and-php/

最好的部分是,它也有活生生的例子:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2012-04-04
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多