我正在编写一个用于以加密形式存储文件的web应用程序,但稍后可以在非php环境中进行解密。因此,假设用户上传了一个名为doc.pdf
的文件。 然后它以加密形式加密并存储在服务器上。然后用户可以稍后下载加密的文件并在他/她的系统上对其进行解密。在PHP中执行外部程序的有效方法?
因为使用php的mcrypt扩展加密的文件是不可移植的,所以我决定用c编写一个名为“encrypt”的程序。然后,我调用它在PHP:现在
$return_var=exec("encrypt $file_path $key");
,我认为的另一种方法是创建一个加密的服务器基本上是与周围聆听通过套接字请求的能力的加密程序的包装。所以我们可以说php脚本现在会向这个程序发出一个请求,提供一个文件名和要加密的密钥。
我认为这可能是一种更灵活的方法,因为通过将加密服务器程序放在另一台计算机上,可以轻松调整加密过程的负载。
现在,我的问题是两种方法中的哪一种方法是有效的(就速度而言,处理大量客户等)?
如果您可以将传入的数据流式传输到执行加密的某些内容,然后直接将其写入磁盘,那么它真的会得到回报。处理文件就好像它是一个批处理过程一样,效率要低得多,因为你必须将数据加载到内存中X次,甚至可能从磁盘加载(这也可能是不安全的)。 – 2012-01-08 13:57:36