Human-Readable Encryption KeysIt is often difficult to record encryption keys (such as with 128-bit AES keys are defined with 32 hex characters. In the following we use the RFC1751 module to define "Human-Readable 128-bit Keys", and which maps the blocks into plain English. The following generates a random key, and converts it into an English-text phase: |
Example
There are 2,048 words defined, each defined with 11 bits. For a 128-bit hex key, we generate 12 words (11x12=132 bits).
Hex Key: 46be0927a4f86577f17ce6d10bc6aa61 Plain text key: YAW TRUE AIDE AIDE FREE MIMI TURN TALE LUNG GUM COOL OW
Try an example
- EB33 F77E E73D 4053 gives "TIDE ITCH SLOW REIN RULE MOT" (see RFC1751). Test
- CCAC 2AED 5910 56BE 4F90 FD44 1C53 4766 gives "RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE" (see RFC1751). Test
- 46be0927a4f86577f17ce6d10bc6aa61 gives "YAW TRUE AIDE AIDE FREE MIMI TURN TALE LUNG GUM COOL OW". Test
- 27de55aaa1af4ee040407ca0c7f652e9 gives " ME USES COOL USE VIEW DAVE THY ASK MEN GREG CHAR DOLE". Test
Code used
The following outlines the equivalent Python code:
import os import binascii from Crypto.Util import RFC1751 key = os.urandom(16) # Generate 16 random bytes (128 bits) print ("Hex Key:\t",binascii.hexlify(key)) y = RFC1751.key_to_english(key) print ("Plain text key:\t",y) key = RFC1751.english_to_key(y) print ("\n\nReverse:\t",binascii.hexlify(key)) print "\n\nReverse:\t",binascii.hexlify(key)
The first few strings are:
char Wp[2048][4] = { "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD", "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", "AN", "ANA", "AND", "ANN", "ANT", "ANY", "APE", "APS", "APT", "ARC", "ARE", "ARK", "ARM", "ART", "AS", "ASH", "ASK", "AT", "ATE", "AUG", "AUK", "AVE", "AWE", "AWK", "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM", "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", "BEN", "BET", "BEY", "BIB", "BID", "BIG", "BIN", "BIT", "BOB", "BOG", "BON", "BOO", "BOP", "BOW", "BOY", "BUB", "BUD", "BUG", "BUM", "BUN", "BUS", "BUT", "BUY", "BY", "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT", "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", "COW", "COY", "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", "DAB", "DAD", "DAM", "DAN", "DAR", "DAY", "DEE", "DEL", "DEN", "DES", "DEW", "DID", "DIE", "DIG", "DIN", "DIP", "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB", "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", "EGG", "EGO", "ELI", "ELK", "ELM", "ELY", "EM", "END", "EST", "ETC", "EVA", "EVE", "EWE", "EYE", "FAD", "FAN", "FAR", "FAT", "FAY", "FED", "FEE", "FEW", "FIB", "FIG", "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR", "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", "GAM", "GAP", "GAS", "GAY", "GEE", "GEL", "GEM", "GET", "GIG", "GIL", "GIN", "GO", "GOT", "GUM", "GUN", "GUS", "GUT", "GUY", "GYM", "GYP", "HA", "HAD", "HAL", "HAM", "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM", "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", "HIS", "HIT",