Length for AES256 symmetric encryption passphrase?

Robert J. Hansen rjh at sixdemonbag.org
Fri Apr 4 22:14:09 CEST 2014

> To be clear, I want to use gnupgp to do symmetric encryption using  
> AES256.  As I understand it, the 'gpg -symmetric ...' command  
> converts a pass phrase into a key, a 32 byte key in the case of  
> AES256.


> I /assume/ that this conversion is 'deterministic'  since as far as  
> I can tell, the 'gpg -symmetric ...' does not store the key it  
> generates. Correct me if I'm wrong.

Again, correct!

> I am trying to decide how long a pass phrase to use.  I have not  
> decided how to generate the pass phrase.  Assume that it is  
> pseudo-randomly chosen from the an english language character set.

Then this becomes pretty straightforward.  :)  Let's say you use the  
upper- and lower-case letters, the digits 0 through 9, as well as the  
'+' and '/' marks.  This character set is commonly called 'base64',  
since there are 64 symbols in the set.

Using the equation René provided and I polished a bit, you have:

       3 * 256    <-- 256: size of the key in bits
L = -----------
     10 * log 64  <--  64: how many letters are in your set

... 43 characters.

A quick back-of-the-envelope calculation confirms this to be the case.  
  base64 is known to have six bits of entropy per character.  6 * 43 =  
258 bits.  At 43 characters you're providing GnuPG with 258 bits of  
entropy to use in creating a 256-bit symmetric key.

More information about the Gnupg-users mailing list