【问题标题】:PHP OpenSSL Encrypt IssuePHP OpenSSL 加密问题
【发布时间】:2018-04-05 00:57:19
【问题描述】:

所以我正在尝试使用 openssl 加密和回显文件。获取我的文件内容是可行的,但是在我调用该函数进行加密之后,它不会回显任何内容,就好像它是一个语法错误一样。

$file = file_get_contents($filename);
//echo $file; // works
$encfile = openssl_encrypt($file, $encmethod, $enckey, 0, $iv);
echo $encfile;

是的,我所有的加密密钥和一切都是有效的。加密后回显任何内容都不起作用。如果有人知道出了什么问题,请告诉我。

【问题讨论】:

  • 检查您的错误日志。
  • 告诉我们,$encmethod$iv 的值是什么。另外,$enckey字节长度是多少?还应要求检查您的错误日志。
  • @MattClark $encmethod = "AES-256-CBC"; $iv 是 16 字节 $enckey 是 32 并且它们基于时间并且以前在较小的文件上工作得很好。
  • 那么,在@zerk 询问之后,日志显示了什么,什么?如果您无权访问日志,则将错误报告设置为捕获并显示。还有什么版本的PHP?

标签: php encryption openssl


【解决方案1】:

我允许 php 使用更多内存

ini_set('memory_limit','512M');

现在它就像一个魅力。

【讨论】:

  • 我在我的服务器上使用ini_set('memory_limit','3G');,真的。但这只是一次,Ususall PHP 只有1G,但我不得不从数据库中提取 1.3 亿行并将它们移动到 MongoDB ......哈哈
【解决方案2】:

我不会添加更多内存。

我最近遇到了类似的问题。

我是如何修复它的,我一次加密了几 MB 的文件块,然后我用 : 分隔了 base64 编码的块,它不会出现在 base64 中。

然后当你解码它时,你会读到它告诉你得到: 解密它并继续下一个块。

这样你就可以保持在内存限制之下... :)

查看我几天前发布的这个答案KLICK

-注意- 我将 PHPSecLib 用于 AES,我们已经将它用于 sFTP,我必须从 mycrypt 更新,以便我们即将迁移到 PHP7。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2012-08-29
    • 2017-08-24
    相关资源
    最近更新 更多