Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!decwrl!16bits.dec.com!kruger From: kruger@16bits.dec.com (I've got 50nS memory. What did you say?) Newsgroups: sci.crypt Subject: turning a plaintext source into a good "random" key Message-ID: <8803011848.AA05787@decwrl.dec.com> Date: 1 Mar 88 21:40:00 GMT Organization: Digital Equipment Corporation Lines: 18 While I agree that plaintext has to much regularity to use as a key, it also has a tremendous amount of variety. The trick is to correctly extract the random element, while somehow 'chopping up' the regularities. The basic concept of the book method is good -- you've got a large, effectively one-time pad (justkeep a list of books if you send LOTS of messages!) As a good start, I would propose a finite state machine. Given the current letter, and the position in the word, do a table lookup using the next word to (excuse me, letter) to determine what the next character should be. Even before this, it is probably good to store the letters in a six-bit code, as there is obviously way too many zeros in the high bits of a byte. Now given this finite- state code, do some sort of scrambling (exchange bits at various intervals, for example) and you're well on the way to reducing the pattern of the key. If there is still too much 'pattern' in the code, taking the low-order bits and leaving the high-order ones would probably kill most of it. And for that matter,removing the vowels in the original plaintext key would also up the randomness. Well, on with the criticism! dov