You probably do not want to try encrypting largish
files all at once, to save yourself RAM.
You can look at
Crypt::CBC
which allows you to encrypt a file as you read it without
needing to worry about the encryption algorithm's blocksize and without
needing to keep it all in memory.
(With Crypt::CBC you can use Twofish, Blowfish, DES, and IDEA,
at least.)
The key for any of these encryption algorithms is usually
just random data. You are probably better off using a
key composed of random data, since it will probably
be longer and more random (especially since
non-printable characters would be included) and thus harder to brute force.
But,
a password should work.