Could you please help me find a good file encryption tool? The target OS is Linux, but tools for Windows are welcome, too. FOSS tools are preferred. The tool must be reliable both for the recovery of the original data (on decryption) and security-wise. The encrypted file is to be used only by myself.
It would be very nice if the tool had a slow and/or a resource-intensive password derivation scheme like the used in bcrypt, scrypt or KeePass.


  • I'm not interested in an encrypted filesystem.
  • I'm not interested in an encrypted (virtual or not) disk or partition.
  • Plausible deniability is not an issue.

Additional question: considering that the encrypted files could be made available freely online, some problems arise (eg the evolution of the computational power). What other security measures (besides the encryption per se) would you advise to be taken (eg password/key lenght, tool configuration etc)?

  • Hi @ML, welcome to Information Security. Please take a moment to review the FAQ. Typically, questions of this sort - "please find me a tool", or "list of somethings" - are usually closed, as they are considered not good questions for SE's format. That said, I think this question can be changed just enough to make it more on-topic, such as "what is important in such a tool", or "how do I check that it uses strong cryptography". Please try to edit accordingly.
    – AviD
    Feb 29, 2012 at 12:32

5 Answers 5


Because encrypted files are not compressible, the most useful place to put encryption is in a compression program; that way you can compress the content and then encrypt it.

Modern tools generally use well-vetted algorithms such as AES. Avoid classic ZIP encryption because it uses a bad algorithm. 7-zip is a great tool because it's FOSS, cross-platform, and very widely recognized. It uses 256-bit AES, which is currently "unbreakable" enough that a brute-force attack is the most efficient attack algorithm.

7-zip, including encryption, can be integrated into GNOME's built-in archive manager (and may be installed already!), making the whole process largely transparent. The p7zip command handles command-line access. The file extension is .7z


Truecrypt is appraised and widely used, but most of its usage is for disk encryption. As you are more interested on single files, I would either research how to effectivley use Truecrypt for single files or another option is GnuPG.

"GnuPG is a volume and individual file encryption tool with support for a dozen encryption schemes, paired keys, and expiring signatures. GnuPG doesn't only provide rock-solid local file encryption; it is, thanks to paired encryption and public key servers, a great tool for encrypted communication

GnuPG is is used on a command line, this are the basics:

Encrypt file:

$ gpg -c file_name.ext

The -c option is to encrypt with symmetric cipher.

Decrypt file:

$ gpg file_name.ext.gpg

Both work on Linux,Windows & Mac.

For encrypted files that will be made available online, secured encrypting through Truecrypt or GnuPG would be enough.

If the file contains too sensitive data for just encryption, I would provide more description on the scenario and I could provide more extensive methods of securing them.

Update: TrueCrypt is unmaintained and is not considered secure any more:

WARNING: Using TrueCrypt is not secure as it may contain unfixed security issues

This page exists only to help migrate existing data encrypted by TrueCrypt.

The development of TrueCrypt was ended in 5/2014 after Microsoft terminated support of Windows XP. Windows 8/7/Vista and later offer integrated support for encrypted disks and virtual disk images. Such integrated support is also available on other platforms (click here for more information). You should migrate any data encrypted by TrueCrypt to encrypted disks or virtual disk images supported on your platform.


For file encryption, use GPG. It is well-vetted by cryptographers and is in some sense a gold standard for file encryption.

You can control the process for generating a cryptographic key from the passphrase, using --s2k-count N, where N is the number of times you want the passphrase hashing to be repeated. I suggest trying a few different values, timing how long GPG takes for each on your machine, and choosing one that is slow enough for you. Unfortunately, for reasons that surpasseth my understanding, there is an upper limit on the number you can choose.

For example, on my machine,

gpg -c --force-mdc --s2k-count 65011712 foo.txt

works nicely.


Unless you use monstrously complex passwords, any simple password-based symmetric encryption is not a good idea for your situation. The reason being that even if you use strong symmetric encryption, like AES, your password will still be subject to offline brute-force attacks.

In other words... password strength discussions for AES 128 assume 128 bit key files. For a password with the entropy of a 128 bit random key, you need at least a 20 character completely randomly generated password of all printable ASCII.




This is why you use a randomly generated key file, and encrypt that with your (lesser) password. Then you can put your encrypted data online, with confidence that unless somebody has the encrypted keyfile, they can't even begin to attempt a brute-force against you.

Keep a backup of your keyfile in a very secure place.

PGP/GnuPG is the right way to do this. The keyfile is your private key.

Truecrypt supports keyfiles too, and is a reasonable more specialized alternative.


You could also use openssl to encrypt single files, to encrypt:

openssl aes-256-cbc -a -salt -in plain_text.txt -out ciphered_text.enc

When you type this command openssl will ask you to create a password, to decrypt:

openssl aes-256-cbc -d -a -in ciphered_text.enc -out plain_text.txt

This command will ask you for the password you created in the previous step. You can also specify the encryption algorithm you want to use, in this case is "aes-256-cbc"

Not the answer you're looking for? Browse other questions tagged .