I have pulled this from an old comp.sources.misc issue and inserted a few improvements to accomodate the program to the needs of modern Un*x "passwd" commands. Many of them require at least one capital letter and/or digit in passwords. So I've changed the algorithm as follows: Optionally, the second syllable of the generated word is capitalized (i.e. the starting consonant is), and on another option, the second syllable is prefixed with a digit. This scheme is predictable but better than nothing - you can easily remember the word with the second syllable stressed, so you know which letter to capitalize, and remember the digit along with the word and already know where to insert it. The following compile-time options are recognized. If none of them is active, you get the original version. CAPITALIZE - put capital letters into the generated passwords. NUMERALS - put numerals into the generated passwords. ALTPHON - use some alternate spellings. Originally, the number of "o"s in the generated words is disproportionally high, and "ooo" sequences are common. RAND48 - set this to use the better pseudorandom number generator of the drand48(3) family if your system has this. I've also taken the liberty to write a Makefile and a man page. Following are results of test runs how many duplicate words are generated. The test was run under HPUX 8.05 with all the above options set. For each length, 10 test runs were conducted which all had to generate 100,000 passwords, and counted the number of words that were repeated at least once (uniq -d). length=8 1232 1273 1266 1308 1291 1248 1280 1266 1250 1278 length=9 178 190 174 184 210 192 204 237 210 205 length=10 35 29 36 24 24 19 30 36 28 32 length=11 7 3 4 7 3 7 6 3 4 7 length=12 0 1 0 0 3 0 1 1 1 0 length=13 0 0 0 0 0 0 0 0 0 0 length=14 0 0 0 0 0 0 0 0 0 0 Olaf Titz <titz@askdonald.ask.uni-karlsruhe.de>