RFC 1751 (rfc1751) - Page 2 of 15
A Convention for Human-Readable 128-bit Keys
Alternative Format: Original Text Document
RFC 1751 Human-Readable 128-bit Keys December 1994
Because of the need for interoperability, it is undesirable to have
different dictionaries for different languages. Also, the current
dictionary only uses characters from the invariant portion of ISO-
646. Finally, there is an installed base of users and applications
with this dictionary.
The Proposal
The code (see Appendix A) which S/Key uses to convert 64-bit numbers
to six English words contains two primitives which perform
conversions either way. The primitive btoe(char *engout,char *c)
takes a 64-bit quantity referenced by c and places English words in
the string referenced by engout. The primitive etob(char *out,char
*e) performs the opposite with an input string of English words
referenced by e, and by placing the 64-bit result into the buffer
referenced by out.
The aforementioned primitives can be applied to both halves of a
128-bit key, or both halves of a string of twelve English words. Two
new primitives (see Appendix B), key2eng(char *engout,char *key) and
eng2key(char *keyout,char *eng) serve as wrappers which call the
S/Key primitives twice, once for each half of the 128-bit key or
string of twelve words.
For example, the 128-bit key of:
CCAC 2AED 5910 56BE 4F90 FD44 1C53 4766
would become
RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE
Likewise, a user should be able to type in
TROD MUTE TAIL WARM CHAR KONG HAAG CITY BORE O TEAL AWL
as a key, and the machine should make the translation to:
EFF8 1F9B FBC6 5350 920C DD74 16DE 8009
If this proposal is to work, it is critical that the dictionary of
English words does not change with different implementations. A
freely redistributable reference implementation is given in
Appendices A and B.
McDonald