Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: third_party/google-endpoints/Crypto/Util/RFC1751.py

Issue 2666783008: Add google-endpoints to third_party/. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # rfc1751.py : Converts between 128-bit strings and a human-readable
2 # sequence of words, as defined in RFC1751: "A Convention for
3 # Human-Readable 128-bit Keys", by Daniel L. McDonald.
4 #
5 # Part of the Python Cryptography Toolkit
6 #
7 # Written by Andrew M. Kuchling and others
8 #
9 # ===================================================================
10 # The contents of this file are dedicated to the public domain. To
11 # the extent that dedication to the public domain is not available,
12 # everyone is granted a worldwide, perpetual, royalty-free,
13 # non-exclusive license to exercise all rights associated with the
14 # contents of this file for any purpose whatsoever.
15 # No rights are reserved.
16 #
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 # SOFTWARE.
25 # ===================================================================
26
27 __revision__ = "$Id$"
28
29
30 import binascii
31 from Crypto.Util.py3compat import *
32
33 binary={0:'0000', 1:'0001', 2:'0010', 3:'0011', 4:'0100', 5:'0101',
34 6:'0110', 7:'0111', 8:'1000', 9:'1001', 10:'1010', 11:'1011',
35 12:'1100', 13:'1101', 14:'1110', 15:'1111'}
36
37 def _key2bin(s):
38 "Convert a key into a string of binary digits"
39 kl=map(lambda x: bord(x), s)
40 kl=map(lambda x: binary[x>>4]+binary[x&15], kl)
41 return ''.join(kl)
42
43 def _extract(key, start, length):
44 """Extract a bitstring(2.x)/bytestring(2.x) from a string of binary digits, and return its
45 numeric value."""
46 k=key[start:start+length]
47 return reduce(lambda x,y: x*2+ord(y)-48, k, 0)
48
49 def key_to_english (key):
50 """key_to_english(key:string(2.x)/bytes(3.x)) : string
51 Transform an arbitrary key into a string containing English words.
52 The key length must be a multiple of 8.
53 """
54 english=''
55 for index in range(0, len(key), 8): # Loop over 8-byte subkeys
56 subkey=key[index:index+8]
57 # Compute the parity of the key
58 skbin=_key2bin(subkey) ; p=0
59 for i in range(0, 64, 2): p=p+_extract(skbin, i, 2)
60 # Append parity bits to the subkey
61 skbin=_key2bin(subkey+bchr((p<<6) & 255))
62 for i in range(0, 64, 11):
63 english=english+wordlist[_extract(skbin, i, 11)]+' '
64
65 return english[:-1] # Remove the trailing space
66
67 def english_to_key (s):
68 """english_to_key(string):string(2.x)/bytes(2.x)
69 Transform a string into a corresponding key.
70 The string must contain words separated by whitespace; the number
71 of words must be a multiple of 6.
72 """
73
74 L=s.upper().split() ; key=b('')
75 for index in range(0, len(L), 6):
76 sublist=L[index:index+6] ; char=9*[0] ; bits=0
77 for i in sublist:
78 index = wordlist.index(i)
79 shift = (8-(bits+11)%8) %8
80 y = index << shift
81 cl, cc, cr = (y>>16), (y>>8)&0xff, y & 0xff
82 if (shift>5):
83 char[bits>>3] = char[bits>>3] | cl
84 char[(bits>>3)+1] = char[(bits>>3)+1] | cc
85 char[(bits>>3)+2] = char[(bits>>3)+2] | cr
86 elif shift>-3:
87 char[bits>>3] = char[bits>>3] | cc
88 char[(bits>>3)+1] = char[(bits>>3)+1] | cr
89 else: char[bits>>3] = char[bits>>3] | cr
90 bits=bits+11
91 subkey=reduce(lambda x,y:x+bchr(y), char, b(''))
92
93 # Check the parity of the resulting key
94 skbin=_key2bin(subkey)
95 p=0
96 for i in range(0, 64, 2): p=p+_extract(skbin, i, 2)
97 if (p&3) != _extract(skbin, 64, 2):
98 raise ValueError, "Parity error in resulting key"
99 key=key+subkey[0:8]
100 return key
101
102 wordlist=[ "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD",
103 "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", "AN", "ANA",
104 "AND", "ANN", "ANT", "ANY", "APE", "APS", "APT", "ARC", "ARE", "ARK",
105 "ARM", "ART", "AS", "ASH", "ASK", "AT", "ATE", "AUG", "AUK", "AVE",
106 "AWE", "AWK", "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM",
107 "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", "BEN", "BET",
108 "BEY", "BIB", "BID", "BIG", "BIN", "BIT", "BOB", "BOG", "BON", "BOO",
109 "BOP", "BOW", "BOY", "BUB", "BUD", "BUG", "BUM", "BUN", "BUS", "BUT",
110 "BUY", "BY", "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT",
111 "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", "COW", "COY",
112 "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", "DAB", "DAD", "DAM", "DAN",
113 "DAR", "DAY", "DEE", "DEL", "DEN", "DES", "DEW", "DID", "DIE", "DIG",
114 "DIN", "DIP", "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB",
115 "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", "EGG", "EGO",
116 "ELI", "ELK", "ELM", "ELY", "EM", "END", "EST", "ETC", "EVA", "EVE",
117 "EWE", "EYE", "FAD", "FAN", "FAR", "FAT", "FAY", "FED", "FEE", "FEW",
118 "FIB", "FIG", "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR",
119 "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", "GAM", "GAP",
120 "GAS", "GAY", "GEE", "GEL", "GEM", "GET", "GIG", "GIL", "GIN", "GO",
121 "GOT", "GUM", "GUN", "GUS", "GUT", "GUY", "GYM", "GYP", "HA", "HAD",
122 "HAL", "HAM", "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM",
123 "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", "HIS", "HIT",
124 "HO", "HOB", "HOC", "HOE", "HOG", "HOP", "HOT", "HOW", "HUB", "HUE",
125 "HUG", "HUH", "HUM", "HUT", "I", "ICY", "IDA", "IF", "IKE", "ILL",
126 "INK", "INN", "IO", "ION", "IQ", "IRA", "IRE", "IRK", "IS", "IT",
127 "ITS", "IVY", "JAB", "JAG", "JAM", "JAN", "JAR", "JAW", "JAY", "JET",
128 "JIG", "JIM", "JO", "JOB", "JOE", "JOG", "JOT", "JOY", "JUG", "JUT",
129 "KAY", "KEG", "KEN", "KEY", "KID", "KIM", "KIN", "KIT", "LA", "LAB",
130 "LAC", "LAD", "LAG", "LAM", "LAP", "LAW", "LAY", "LEA", "LED", "LEE",
131 "LEG", "LEN", "LEO", "LET", "LEW", "LID", "LIE", "LIN", "LIP", "LIT",
132 "LO", "LOB", "LOG", "LOP", "LOS", "LOT", "LOU", "LOW", "LOY", "LUG",
133 "LYE", "MA", "MAC", "MAD", "MAE", "MAN", "MAO", "MAP", "MAT", "MAW",
134 "MAY", "ME", "MEG", "MEL", "MEN", "MET", "MEW", "MID", "MIN", "MIT",
135 "MOB", "MOD", "MOE", "MOO", "MOP", "MOS", "MOT", "MOW", "MUD", "MUG",
136 "MUM", "MY", "NAB", "NAG", "NAN", "NAP", "NAT", "NAY", "NE", "NED",
137 "NEE", "NET", "NEW", "NIB", "NIL", "NIP", "NIT", "NO", "NOB", "NOD",
138 "NON", "NOR", "NOT", "NOV", "NOW", "NU", "NUN", "NUT", "O", "OAF",
139 "OAK", "OAR", "OAT", "ODD", "ODE", "OF", "OFF", "OFT", "OH", "OIL",
140 "OK", "OLD", "ON", "ONE", "OR", "ORB", "ORE", "ORR", "OS", "OTT",
141 "OUR", "OUT", "OVA", "OW", "OWE", "OWL", "OWN", "OX", "PA", "PAD",
142 "PAL", "PAM", "PAN", "PAP", "PAR", "PAT", "PAW", "PAY", "PEA", "PEG",
143 "PEN", "PEP", "PER", "PET", "PEW", "PHI", "PI", "PIE", "PIN", "PIT",
144 "PLY", "PO", "POD", "POE", "POP", "POT", "POW", "PRO", "PRY", "PUB",
145 "PUG", "PUN", "PUP", "PUT", "QUO", "RAG", "RAM", "RAN", "RAP", "RAT",
146 "RAW", "RAY", "REB", "RED", "REP", "RET", "RIB", "RID", "RIG", "RIM",
147 "RIO", "RIP", "ROB", "ROD", "ROE", "RON", "ROT", "ROW", "ROY", "RUB",
148 "RUE", "RUG", "RUM", "RUN", "RYE", "SAC", "SAD", "SAG", "SAL", "SAM",
149 "SAN", "SAP", "SAT", "SAW", "SAY", "SEA", "SEC", "SEE", "SEN", "SET",
150 "SEW", "SHE", "SHY", "SIN", "SIP", "SIR", "SIS", "SIT", "SKI", "SKY",
151 "SLY", "SO", "SOB", "SOD", "SON", "SOP", "SOW", "SOY", "SPA", "SPY",
152 "SUB", "SUD", "SUE", "SUM", "SUN", "SUP", "TAB", "TAD", "TAG", "TAN",
153 "TAP", "TAR", "TEA", "TED", "TEE", "TEN", "THE", "THY", "TIC", "TIE",
154 "TIM", "TIN", "TIP", "TO", "TOE", "TOG", "TOM", "TON", "TOO", "TOP",
155 "TOW", "TOY", "TRY", "TUB", "TUG", "TUM", "TUN", "TWO", "UN", "UP",
156 "US", "USE", "VAN", "VAT", "VET", "VIE", "WAD", "WAG", "WAR", "WAS",
157 "WAY", "WE", "WEB", "WED", "WEE", "WET", "WHO", "WHY", "WIN", "WIT",
158 "WOK", "WON", "WOO", "WOW", "WRY", "WU", "YAM", "YAP", "YAW", "YE",
159 "YEA", "YES", "YET", "YOU", "ABED", "ABEL", "ABET", "ABLE", "ABUT",
160 "ACHE", "ACID", "ACME", "ACRE", "ACTA", "ACTS", "ADAM", "ADDS",
161 "ADEN", "AFAR", "AFRO", "AGEE", "AHEM", "AHOY", "AIDA", "AIDE",
162 "AIDS", "AIRY", "AJAR", "AKIN", "ALAN", "ALEC", "ALGA", "ALIA",
163 "ALLY", "ALMA", "ALOE", "ALSO", "ALTO", "ALUM", "ALVA", "AMEN",
164 "AMES", "AMID", "AMMO", "AMOK", "AMOS", "AMRA", "ANDY", "ANEW",
165 "ANNA", "ANNE", "ANTE", "ANTI", "AQUA", "ARAB", "ARCH", "AREA",
166 "ARGO", "ARID", "ARMY", "ARTS", "ARTY", "ASIA", "ASKS", "ATOM",
167 "AUNT", "AURA", "AUTO", "AVER", "AVID", "AVIS", "AVON", "AVOW",
168 "AWAY", "AWRY", "BABE", "BABY", "BACH", "BACK", "BADE", "BAIL",
169 "BAIT", "BAKE", "BALD", "BALE", "BALI", "BALK", "BALL", "BALM",
170 "BAND", "BANE", "BANG", "BANK", "BARB", "BARD", "BARE", "BARK",
171 "BARN", "BARR", "BASE", "BASH", "BASK", "BASS", "BATE", "BATH",
172 "BAWD", "BAWL", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", "BEAT",
173 "BEAU", "BECK", "BEEF", "BEEN", "BEER",
174 "BEET", "BELA", "BELL", "BELT", "BEND", "BENT", "BERG", "BERN",
175 "BERT", "BESS", "BEST", "BETA", "BETH", "BHOY", "BIAS", "BIDE",
176 "BIEN", "BILE", "BILK", "BILL", "BIND", "BING", "BIRD", "BITE",
177 "BITS", "BLAB", "BLAT", "BLED", "BLEW", "BLOB", "BLOC", "BLOT",
178 "BLOW", "BLUE", "BLUM", "BLUR", "BOAR", "BOAT", "BOCA", "BOCK",
179 "BODE", "BODY", "BOGY", "BOHR", "BOIL", "BOLD", "BOLO", "BOLT",
180 "BOMB", "BONA", "BOND", "BONE", "BONG", "BONN", "BONY", "BOOK",
181 "BOOM", "BOON", "BOOT", "BORE", "BORG", "BORN", "BOSE", "BOSS",
182 "BOTH", "BOUT", "BOWL", "BOYD", "BRAD", "BRAE", "BRAG", "BRAN",
183 "BRAY", "BRED", "BREW", "BRIG", "BRIM", "BROW", "BUCK", "BUDD",
184 "BUFF", "BULB", "BULK", "BULL", "BUNK", "BUNT", "BUOY", "BURG",
185 "BURL", "BURN", "BURR", "BURT", "BURY", "BUSH", "BUSS", "BUST",
186 "BUSY", "BYTE", "CADY", "CAFE", "CAGE", "CAIN", "CAKE", "CALF",
187 "CALL", "CALM", "CAME", "CANE", "CANT", "CARD", "CARE", "CARL",
188 "CARR", "CART", "CASE", "CASH", "CASK", "CAST", "CAVE", "CEIL",
189 "CELL", "CENT", "CERN", "CHAD", "CHAR", "CHAT", "CHAW", "CHEF",
190 "CHEN", "CHEW", "CHIC", "CHIN", "CHOU", "CHOW", "CHUB", "CHUG",
191 "CHUM", "CITE", "CITY", "CLAD", "CLAM", "CLAN", "CLAW", "CLAY",
192 "CLOD", "CLOG", "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COCA",
193 "COCK", "COCO", "CODA", "CODE", "CODY", "COED", "COIL", "COIN",
194 "COKE", "COLA", "COLD", "COLT", "COMA", "COMB", "COME", "COOK",
195 "COOL", "COON", "COOT", "CORD", "CORE", "CORK", "CORN", "COST",
196 "COVE", "COWL", "CRAB", "CRAG", "CRAM", "CRAY", "CREW", "CRIB",
197 "CROW", "CRUD", "CUBA", "CUBE", "CUFF", "CULL", "CULT", "CUNY",
198 "CURB", "CURD", "CURE", "CURL", "CURT", "CUTS", "DADE", "DALE",
199 "DAME", "DANA", "DANE", "DANG", "DANK", "DARE", "DARK", "DARN",
200 "DART", "DASH", "DATA", "DATE", "DAVE", "DAVY", "DAWN", "DAYS",
201 "DEAD", "DEAF", "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED",
202 "DEEM", "DEER", "DEFT", "DEFY", "DELL", "DENT", "DENY", "DESK",
203 "DIAL", "DICE", "DIED", "DIET", "DIME", "DINE", "DING", "DINT",
204 "DIRE", "DIRT", "DISC", "DISH", "DISK", "DIVE", "DOCK", "DOES",
205 "DOLE", "DOLL", "DOLT", "DOME", "DONE", "DOOM", "DOOR", "DORA",
206 "DOSE", "DOTE", "DOUG", "DOUR", "DOVE", "DOWN", "DRAB", "DRAG",
207 "DRAM", "DRAW", "DREW", "DRUB", "DRUG", "DRUM", "DUAL", "DUCK",
208 "DUCT", "DUEL", "DUET", "DUKE", "DULL", "DUMB", "DUNE", "DUNK",
209 "DUSK", "DUST", "DUTY", "EACH", "EARL", "EARN", "EASE", "EAST",
210 "EASY", "EBEN", "ECHO", "EDDY", "EDEN", "EDGE", "EDGY", "EDIT",
211 "EDNA", "EGAN", "ELAN", "ELBA", "ELLA", "ELSE", "EMIL", "EMIT",
212 "EMMA", "ENDS", "ERIC", "EROS", "EVEN", "EVER", "EVIL", "EYED",
213 "FACE", "FACT", "FADE", "FAIL", "FAIN", "FAIR", "FAKE", "FALL",
214 "FAME", "FANG", "FARM", "FAST", "FATE", "FAWN", "FEAR", "FEAT",
215 "FEED", "FEEL", "FEET", "FELL", "FELT", "FEND", "FERN", "FEST",
216 "FEUD", "FIEF", "FIGS", "FILE", "FILL", "FILM", "FIND", "FINE",
217 "FINK", "FIRE", "FIRM", "FISH", "FISK", "FIST", "FITS", "FIVE",
218 "FLAG", "FLAK", "FLAM", "FLAT", "FLAW", "FLEA", "FLED", "FLEW",
219 "FLIT", "FLOC", "FLOG", "FLOW", "FLUB", "FLUE", "FOAL", "FOAM",
220 "FOGY", "FOIL", "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL",
221 "FOOT", "FORD", "FORE", "FORK", "FORM", "FORT", "FOSS", "FOUL",
222 "FOUR", "FOWL", "FRAU", "FRAY", "FRED", "FREE", "FRET", "FREY",
223 "FROG", "FROM", "FUEL", "FULL", "FUME", "FUND", "FUNK", "FURY",
224 "FUSE", "FUSS", "GAFF", "GAGE", "GAIL", "GAIN", "GAIT", "GALA",
225 "GALE", "GALL", "GALT", "GAME", "GANG", "GARB", "GARY", "GASH",
226 "GATE", "GAUL", "GAUR", "GAVE", "GAWK", "GEAR", "GELD", "GENE",
227 "GENT", "GERM", "GETS", "GIBE", "GIFT", "GILD", "GILL", "GILT",
228 "GINA", "GIRD", "GIRL", "GIST", "GIVE", "GLAD", "GLEE", "GLEN",
229 "GLIB", "GLOB", "GLOM", "GLOW", "GLUE", "GLUM", "GLUT", "GOAD",
230 "GOAL", "GOAT", "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG",
231 "GOOD", "GOOF", "GORE", "GORY", "GOSH", "GOUT", "GOWN", "GRAB",
232 "GRAD", "GRAY", "GREG", "GREW", "GREY", "GRID", "GRIM", "GRIN",
233 "GRIT", "GROW", "GRUB", "GULF", "GULL", "GUNK", "GURU", "GUSH",
234 "GUST", "GWEN", "GWYN", "HAAG", "HAAS", "HACK", "HAIL", "HAIR",
235 "HALE", "HALF", "HALL", "HALO", "HALT", "HAND", "HANG", "HANK",
236 "HANS", "HARD", "HARK", "HARM", "HART", "HASH", "HAST", "HATE",
237 "HATH", "HAUL", "HAVE", "HAWK", "HAYS", "HEAD", "HEAL", "HEAR",
238 "HEAT", "HEBE", "HECK", "HEED", "HEEL", "HEFT", "HELD", "HELL",
239 "HELM", "HERB", "HERD", "HERE", "HERO", "HERS", "HESS", "HEWN",
240 "HICK", "HIDE", "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT",
241 "HIRE", "HISS", "HIVE", "HOBO", "HOCK", "HOFF", "HOLD", "HOLE",
242 "HOLM", "HOLT", "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK",
243 "HOOT", "HORN", "HOSE", "HOST", "HOUR", "HOVE", "HOWE", "HOWL",
244 "HOYT", "HUCK", "HUED", "HUFF", "HUGE", "HUGH", "HUGO", "HULK",
245 "HULL", "HUNK", "HUNT", "HURD", "HURL", "HURT", "HUSH", "HYDE",
246 "HYMN", "IBIS", "ICON", "IDEA", "IDLE", "IFFY", "INCA", "INCH",
247 "INTO", "IONS", "IOTA", "IOWA", "IRIS", "IRMA", "IRON", "ISLE",
248 "ITCH", "ITEM", "IVAN", "JACK", "JADE", "JAIL", "JAKE", "JANE",
249 "JAVA", "JEAN", "JEFF", "JERK", "JESS", "JEST", "JIBE", "JILL",
250 "JILT", "JIVE", "JOAN", "JOBS", "JOCK", "JOEL", "JOEY", "JOHN",
251 "JOIN", "JOKE", "JOLT", "JOVE", "JUDD", "JUDE", "JUDO", "JUDY",
252 "JUJU", "JUKE", "JULY", "JUNE", "JUNK", "JUNO", "JURY", "JUST",
253 "JUTE", "KAHN", "KALE", "KANE", "KANT", "KARL", "KATE", "KEEL",
254 "KEEN", "KENO", "KENT", "KERN", "KERR", "KEYS", "KICK", "KILL",
255 "KIND", "KING", "KIRK", "KISS", "KITE", "KLAN", "KNEE", "KNEW",
256 "KNIT", "KNOB", "KNOT", "KNOW", "KOCH", "KONG", "KUDO", "KURD",
257 "KURT", "KYLE", "LACE", "LACK", "LACY", "LADY", "LAID", "LAIN",
258 "LAIR", "LAKE", "LAMB", "LAME", "LAND", "LANE", "LANG", "LARD",
259 "LARK", "LASS", "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS",
260 "LAYS", "LEAD", "LEAF", "LEAK", "LEAN", "LEAR", "LEEK", "LEER",
261 "LEFT", "LEND", "LENS", "LENT", "LEON", "LESK", "LESS", "LEST",
262 "LETS", "LIAR", "LICE", "LICK", "LIED", "LIEN", "LIES", "LIEU",
263 "LIFE", "LIFT", "LIKE", "LILA", "LILT", "LILY", "LIMA", "LIMB",
264 "LIME", "LIND", "LINE", "LINK", "LINT", "LION", "LISA", "LIST",
265 "LIVE", "LOAD", "LOAF", "LOAM", "LOAN", "LOCK", "LOFT", "LOGE",
266 "LOIS", "LOLA", "LONE", "LONG", "LOOK", "LOON", "LOOT", "LORD",
267 "LORE", "LOSE", "LOSS", "LOST", "LOUD", "LOVE", "LOWE", "LUCK",
268 "LUCY", "LUGE", "LUKE", "LULU", "LUND", "LUNG", "LURA", "LURE",
269 "LURK", "LUSH", "LUST", "LYLE", "LYNN", "LYON", "LYRA", "MACE",
270 "MADE", "MAGI", "MAID", "MAIL", "MAIN", "MAKE", "MALE", "MALI",
271 "MALL", "MALT", "MANA", "MANN", "MANY", "MARC", "MARE", "MARK",
272 "MARS", "MART", "MARY", "MASH", "MASK", "MASS", "MAST", "MATE",
273 "MATH", "MAUL", "MAYO", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK",
274 "MEET", "MELD", "MELT", "MEMO", "MEND", "MENU", "MERT", "MESH",
275 "MESS", "MICE", "MIKE", "MILD", "MILE", "MILK", "MILL", "MILT",
276 "MIMI", "MIND", "MINE", "MINI", "MINK", "MINT", "MIRE", "MISS",
277 "MIST", "MITE", "MITT", "MOAN", "MOAT", "MOCK", "MODE", "MOLD",
278 "MOLE", "MOLL", "MOLT", "MONA", "MONK", "MONT", "MOOD", "MOON",
279 "MOOR", "MOOT", "MORE", "MORN", "MORT", "MOSS", "MOST", "MOTH",
280 "MOVE", "MUCH", "MUCK", "MUDD", "MUFF", "MULE", "MULL", "MURK",
281 "MUSH", "MUST", "MUTE", "MUTT", "MYRA", "MYTH", "NAGY", "NAIL",
282 "NAIR", "NAME", "NARY", "NASH", "NAVE", "NAVY", "NEAL", "NEAR",
283 "NEAT", "NECK", "NEED", "NEIL", "NELL", "NEON", "NERO", "NESS",
284 "NEST", "NEWS", "NEWT", "NIBS", "NICE", "NICK", "NILE", "NINA",
285 "NINE", "NOAH", "NODE", "NOEL", "NOLL", "NONE", "NOOK", "NOON",
286 "NORM", "NOSE", "NOTE", "NOUN", "NOVA", "NUDE", "NULL", "NUMB",
287 "OATH", "OBEY", "OBOE", "ODIN", "OHIO", "OILY", "OINT", "OKAY",
288 "OLAF", "OLDY", "OLGA", "OLIN", "OMAN", "OMEN", "OMIT", "ONCE",
289 "ONES", "ONLY", "ONTO", "ONUS", "ORAL", "ORGY", "OSLO", "OTIS",
290 "OTTO", "OUCH", "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OWLY",
291 "OWNS", "QUAD", "QUIT", "QUOD", "RACE", "RACK", "RACY", "RAFT",
292 "RAGE", "RAID", "RAIL", "RAIN", "RAKE", "RANK", "RANT", "RARE",
293 "RASH", "RATE", "RAVE", "RAYS", "READ", "REAL", "REAM", "REAR",
294 "RECK", "REED", "REEF", "REEK", "REEL", "REID", "REIN", "RENA",
295 "REND", "RENT", "REST", "RICE", "RICH", "RICK", "RIDE", "RIFT",
296 "RILL", "RIME", "RING", "RINK", "RISE", "RISK", "RITE", "ROAD",
297 "ROAM", "ROAR", "ROBE", "ROCK", "RODE", "ROIL", "ROLL", "ROME",
298 "ROOD", "ROOF", "ROOK", "ROOM", "ROOT", "ROSA", "ROSE", "ROSS",
299 "ROSY", "ROTH", "ROUT", "ROVE", "ROWE", "ROWS", "RUBE", "RUBY",
300 "RUDE", "RUDY", "RUIN", "RULE", "RUNG", "RUNS", "RUNT", "RUSE",
301 "RUSH", "RUSK", "RUSS", "RUST", "RUTH", "SACK", "SAFE", "SAGE",
302 "SAID", "SAIL", "SALE", "SALK", "SALT", "SAME", "SAND", "SANE",
303 "SANG", "SANK", "SARA", "SAUL", "SAVE", "SAYS", "SCAN", "SCAR",
304 "SCAT", "SCOT", "SEAL", "SEAM", "SEAR", "SEAT", "SEED", "SEEK",
305 "SEEM", "SEEN", "SEES", "SELF", "SELL", "SEND", "SENT", "SETS",
306 "SEWN", "SHAG", "SHAM", "SHAW", "SHAY", "SHED", "SHIM", "SHIN",
307 "SHOD", "SHOE", "SHOT", "SHOW", "SHUN", "SHUT", "SICK", "SIDE",
308 "SIFT", "SIGH", "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE",
309 "SING", "SINK", "SIRE", "SITE", "SITS", "SITU", "SKAT", "SKEW",
310 "SKID", "SKIM", "SKIN", "SKIT", "SLAB", "SLAM", "SLAT", "SLAY",
311 "SLED", "SLEW", "SLID", "SLIM", "SLIT", "SLOB", "SLOG", "SLOT",
312 "SLOW", "SLUG", "SLUM", "SLUR", "SMOG", "SMUG", "SNAG", "SNOB",
313 "SNOW", "SNUB", "SNUG", "SOAK", "SOAR", "SOCK", "SODA", "SOFA",
314 "SOFT", "SOIL", "SOLD", "SOME", "SONG", "SOON", "SOOT", "SORE",
315 "SORT", "SOUL", "SOUR", "SOWN", "STAB", "STAG", "STAN", "STAR",
316 "STAY", "STEM", "STEW", "STIR", "STOW", "STUB", "STUN", "SUCH",
317 "SUDS", "SUIT", "SULK", "SUMS", "SUNG", "SUNK", "SURE", "SURF",
318 "SWAB", "SWAG", "SWAM", "SWAN", "SWAT", "SWAY", "SWIM", "SWUM",
319 "TACK", "TACT", "TAIL", "TAKE", "TALE", "TALK", "TALL", "TANK",
320 "TASK", "TATE", "TAUT", "TEAL", "TEAM", "TEAR", "TECH", "TEEM",
321 "TEEN", "TEET", "TELL", "TEND", "TENT", "TERM", "TERN", "TESS",
322 "TEST", "THAN", "THAT", "THEE", "THEM", "THEN", "THEY", "THIN",
323 "THIS", "THUD", "THUG", "TICK", "TIDE", "TIDY", "TIED", "TIER",
324 "TILE", "TILL", "TILT", "TIME", "TINA", "TINE", "TINT", "TINY",
325 "TIRE", "TOAD", "TOGO", "TOIL", "TOLD", "TOLL", "TONE", "TONG",
326 "TONY", "TOOK", "TOOL", "TOOT", "TORE", "TORN", "TOTE", "TOUR",
327 "TOUT", "TOWN", "TRAG", "TRAM", "TRAY", "TREE", "TREK", "TRIG",
328 "TRIM", "TRIO", "TROD", "TROT", "TROY", "TRUE", "TUBA", "TUBE",
329 "TUCK", "TUFT", "TUNA", "TUNE", "TUNG", "TURF", "TURN", "TUSK",
330 "TWIG", "TWIN", "TWIT", "ULAN", "UNIT", "URGE", "USED", "USER",
331 "USES", "UTAH", "VAIL", "VAIN", "VALE", "VARY", "VASE", "VAST",
332 "VEAL", "VEDA", "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERY",
333 "VETO", "VICE", "VIEW", "VINE", "VISE", "VOID", "VOLT", "VOTE",
334 "WACK", "WADE", "WAGE", "WAIL", "WAIT", "WAKE", "WALE", "WALK",
335 "WALL", "WALT", "WAND", "WANE", "WANG", "WANT", "WARD", "WARM",
336 "WARN", "WART", "WASH", "WAST", "WATS", "WATT", "WAVE", "WAVY",
337 "WAYS", "WEAK", "WEAL", "WEAN", "WEAR", "WEED", "WEEK", "WEIR",
338 "WELD", "WELL", "WELT", "WENT", "WERE", "WERT", "WEST", "WHAM",
339 "WHAT", "WHEE", "WHEN", "WHET", "WHOA", "WHOM", "WICK", "WIFE",
340 "WILD", "WILL", "WIND", "WINE", "WING", "WINK", "WINO", "WIRE",
341 "WISE", "WISH", "WITH", "WOLF", "WONT", "WOOD", "WOOL", "WORD",
342 "WORE", "WORK", "WORM", "WORN", "WOVE", "WRIT", "WYNN", "YALE",
343 "YANG", "YANK", "YARD", "YARN", "YAWL", "YAWN", "YEAH", "YEAR",
344 "YELL", "YOGA", "YOKE" ]
345
346 if __name__=='__main__':
347 data = [('EB33F77EE73D4053', 'TIDE ITCH SLOW REIN RULE MOT'),
348 ('CCAC2AED591056BE4F90FD441C534766',
349 'RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE'),
350 ('EFF81F9BFBC65350920CDD7416DE8009',
351 'TROD MUTE TAIL WARM CHAR KONG HAAG CITY BORE O TEAL AWL')
352 ]
353
354 for key, words in data:
355 print 'Trying key', key
356 key=binascii.a2b_hex(key)
357 w2=key_to_english(key)
358 if w2!=words:
359 print 'key_to_english fails on key', repr(key), ', producing', str(w 2)
360 k2=english_to_key(words)
361 if k2!=key:
362 print 'english_to_key fails on key', repr(key), ', producing', repr( k2)
363
364
OLDNEW
« no previous file with comments | « third_party/google-endpoints/Crypto/Util/Counter.py ('k') | third_party/google-endpoints/Crypto/Util/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698