压缩和加密在PHP或C

Compression and encryption in PHP or C

本文关键字:PHP 加密 压缩      更新时间:2023-10-16

给定一个10M的字节流,我需要压缩它(gzip或其他)并加密它(Rijndael-128),然后将其存储在磁盘上。在某些情况下,也需要反向操作。

这是一个web应用程序的一部分,主要用PHP开发。我已经用PHP写了几行。然而,我在想是否用C编写这个组件并从PHP调用它会更好。执行时间不是最相关的方面,内存使用和CPU负载才是。

基于此,是否值得将原始字节流写入磁盘,然后在其上运行C/c++程序进行压缩和加密?

确保如果是一个流,那么将其作为流处理,并将资源(RAM)使用保持在最小-即不要将流作为一个巨大的字节数组处理。尝试调整缓冲区大小。

如果速度不够快,可以使用C和AES-NI CPU指令编写一个PHP库。您可以使用已经部署了AES-NI的PHP中的OpenSSL函数。Bothan也可以使用,它是一个c++库,专注于流支持,如果可用,它也使用AES-NI。

无论如何,不要将中间明文写入磁盘,这既不安全,又会引入不必要的I/O (+ OS访问)瓶颈。