使用 mcrypt 和 php 加密上传的 pdf 文件

使用 mcrypt 和 php 加密上传的 pdf 文件

我目前已安装了一个 CentOS 系统,该系统利用 mcrypt 来加密/解密数据库中的数据。由于匆忙,我忘记了自己还需要一个解决方案来加密文件(主要是 pdf,偶尔还有 xls 和 txt 文件)。

有没有办法利用 mcrypt 加密上传的 pdf 文件?我了解 file_get_contents() 和 txt 的可能性;其他格式是否有类似的解决方案?

谢谢!

答案1

我知道这个问题有一个可以接受的答案,但最干净的方法是使用加密流过滤器。PHP 手册上的页面有完整的详细信息,因此我不会在这里重复任何代码,但这似乎是实现此目的的最简单方法。您将流过滤器附加到文件句柄资源,并且在读取或写入文件时透明地加密或解密数据。最重要的是,使用 mcrypt 库来完成所有这些工作。

答案2

编辑

可能最干净(和更通用/支持)的选项是使用Zend_File_Transfer库(如果您不熟悉,可以单独使用 Zend Framework 的各个库,也可以组合使用)。

具体来说,看看筛选器用于 Zend_File_Transfer lib。它使用 MCrypt 作为其加密/解密过滤器(并且具有许多其他必备/好用的功能,如重命名、进度条等)。

我以前用它进行过基本的上传,效果很好。

答案3

如果链 file_get_contents -> mcrypt_encrypt -> mcrypt_decrypt -> file_put_contents 不适用于 PDF 文件(为什么不应该),您仍然可以将其视为二进制数据,而不是文本。

或者,以更系统的方式,使用 EncFS 并创建加密挂载点并将文档存储在那里。

相关内容