我用AES 256加密文件并存储在nginx上,通过GET请求打开它们,并使用密钥作为查询参数。例如http://www.my_secure_nginx.com/files/secret_audio.mp3?key=mysecretkey。您能否提供解决方案以在nginx文件服务器上执行此操作(可能是现有的过滤器),以保持分块响应。换句话说,我需要在nginx上实时解密文件。
最简单的方法是为Lua中的nginx编写自己的模块。Lua-resty-string模块已经支持AES。添加一些文件处理代码和读取代码,就完成了。Lua模块非常快,因为它们在非阻塞I/O中工作。
记住的重要部分是处理填充 - 必须将原始文件大小存储在某个地方(DB、xattr等),并传递给或由nginx读取。
另一个非平凡的主题是随机访问的最终支持。数据必须以CTR模式进行AES加密。XTS、CBC、CFB也可以,但需要更多的开发工作。