PHP lacks a build-in function to encrypt and decrypt large files.
openssl_encrypt can be used to encrypt strings, but loading a huge
file into memory is a bad idea.
So we have to write a userland function doing that. This example uses the symmetric AES-128-CBC algorithm to encrypt smaller chunks of a large file and writes them into another file.