在PHP中执行外部程序的有效方法?

时间:2012-01-08 13:40:01

标签: php c encryption network-programming

我正在编写一个Web应用程序,用于以加密形式存储文件,但以后可以在非php环境中解密。因此,假设用户已上传名为doc.pdf的文件。 然后将其加密并以加密形式存储在服务器上。然后,用户可以稍后下载加密文件并在他/她的系统上解密。

因为使用php的mcrypt扩展名加密的文件是不可移植的,所以我决定在c中编写一个名为“encrypt”的程序。然后我在php中调用它:

$return_var=exec("encrypt $file_path $key");

现在,我想到的另一种方法是创建一个加密服务器,它基本上是加密程序的包装器,具有通过套接字监听请求的能力。因此,假设php脚本现在将向此程序发出请求,提供文件名和加密密钥。

我认为这可能是一种更灵活的方法,因为可以通过将加密服务器程序放在另一台计算机上来轻松调整加密过程的负载。

现在,我的问题是两种方法中的哪一种是有效的(在速度方面,处理大量客户等)?

3 个答案:

答案 0 :(得分:1)

大多数加密过程将用于执行对称加密,例如: AES。 AES - 和大多数加密密码 - 相对较快。你有很多机会等待I / O而不是加密部分。为此创建服务器应用程序几乎肯定是矫枉过正。我会首先使用本地应用程序,只有在真正需要的情况下才会恢复到以后的基本优化。

答案 1 :(得分:0)

如果您在PHP中进行加密而不执行会导致非常大的开销的外部程序,它可能会表现得更好。

查看mcrypt扩展名:

http://de2.php.net/manual/en/mcrypt.examples.php

并将结果字符串写入目标文件。

答案 2 :(得分:0)

我只是出于文件原因ZIP /用密码压缩文件,并为用户下载保存密码等。

这样,用户不需要任何解密工具,并且已经为您完成了加密/拉链保护。

我没有意识到你在问什么,但我会这样做,以便不仅仅是重新发明轮子,而且仍然可以获得相同的结果,受保护的文件。