Take the 2-minute tour ×
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It's 100% free, no registration required.

Suppose that you knew that a plaintext was encrypted with DES and consisted only of 16-bit Unicode letters, numerals, and punctuation marks available on a standard English-language QWERTY keyboard. How could you use this knowledge to attack the DES-encrypted cipher?

share|improve this question
add comment

1 Answer

Pure, raw DES has a key length of 56 bits, which makes it trivially vulnerable to a brute-force attack. Just try all $2^{56}$ possible keys to decrypt the message and stop when you find an English message. On average, this will happen after $2^{55}$ trial decryptions. See the Brute Force Attack section on the DES Wikipedia page for more information on how this has been done historically.

Detection of English text can be automated in several different ways, mostly using metrics that have been computed for large English corpora. Examples are the index of coincidence, letter frequency, and (more generally) n-gram frequency. Counting the number of spaces in the putative plaintext also works surprisingly well; textual documents tend to have quite a few of them.

Attacks under this model are called known-plaintext attacks. Secure ciphers are not vulnerable to known-plaintext attacks: if you replace DES with 3DES, AES, Salsa20, ... in your question, then the answer is "there is no known attack." But DES's key length is short enough to enable brute-force attacks. Note that the only attacks on DES faster than brute-force are not practical: they require an obscene amount of known (or even worse, chosen) plaintexts.

share|improve this answer
and you can't make use of the knowledge that every other byte is 0? –  ratchet freak Feb 4 at 12:30
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.