#Crypt::Navajo -- Navajo Code Talkers Encryption
#Copyright (c) 2002, Michael J. Iatauro. All rights reserved.
#This code is free software; you can redistribute it and/or modify it
+under the
#same terms as Perl itself.
package Crypt::Navajo;
use warnings qw/all/;
use strict;
our $VERSION = '1.0';
use Exporter;
@Crypt::Navajo::ISA = qw/Exporter/;
@Crypt::Navajo::EXPORT_OK = qw/encrypt decrypt/;
my %CALPHA = ('A' => ['WOL-LA-CHEE', 'BE-LA-SANA', 'TSE-NILL'],
'B' => ['NA-HASH-CHID', 'SHUSH', 'TOISH-JEH'],
'C' => ['MOASI', 'TLA-GIN', 'BA-GOSHI'],
'D' => ['BE', 'CHINDI', 'LHA-CHA-EH'],
'E' => ['AH-JAH', 'DZEH', 'AH-NAH'],
'F' => ['CHUO', 'TSA-E-DONIN-EE', 'MA-E'],
'G' => ['AH-TAD', 'KLIZZIE', 'JEHA'],
'H' => ['TSE-GAH', 'CHA', 'LIN'],
'I' => ['TKIN', 'YEH-HES', 'A-CHI'],
'J' => ['TKELE-CHO-G', 'AH-YA-TSINNE', 'YIL-DOI'],
'K' => ['JAD-HO-LONI', 'BA-AH-NE-DI-TININ', 'KLIZZIE-YAZZIE'
+],
'L' => ['DIBEH-YAZZIE', 'AH-JAD', 'NASH-DOIE-TSO'],
'M' => ['TSIN-TLITI', 'BE-TAS-TNI', 'NA-AS-TSO-SI'],
'N' => ['TSAH', 'A-CHIN'],
'O' => ['A-KHA', 'TLO-CHIN', 'NE-AHS-JAH'],
'P' => ['CLA-GI-AIH', 'BI-SO-DIH', 'NE-ZHONI'],
'Q' => ['CA-YEILTH'],
'R' => ['GAH', 'DAH-NES-TSA', 'AH-LOSZ'],
'S' => ['DIBEH', 'KLESH'],
'T' => ['D-AH', 'A-WOH', 'THAN-ZIE'],
'U' => ['SHI-DA', 'NO-DA-IH'],
'V' => ['A-KEH-KI-GLINI'],
'W' => ['GLOE-IH'],
'X' => ['AL-NA-AS-DZOH'],
'Y' => ['TSAH-AS-ZIH'],
'Z' => ['BESH-DO-TLIZ']);
my %DALPHA = ('WOL-LA-CHEE' => 'A',
'BE-LA-SANA' => 'A',
'TSE-NILL' => 'A',
'NA-HASH-CHID' => 'B',
'SHUSH' => 'B',
'TOISH-JEH' => 'B',
'MOASI' => 'C',
'TLA-GIN' => 'C',
'BA-GOSHI' => 'C',
'BE' => 'D',
'CHINDI' => 'D',
'LHA-CHA-EH' => 'D',
'AH-JAH' => 'E',
'DZEH' => 'E',
'AH-NAH' => 'E',
'CHUO' => 'F',
'TSA-E-DONIN-EE' => 'F',
'MA-E' => 'F',
'AH-TAD' => 'G',
'KLIZZIE' => 'G',
'JEHA' => 'G',
'TSE-GAH' => 'H',
'CHA' => 'H',
'LIN' => 'H',
'TKIN' => 'I',
'YEH-HES' => 'I',
'A-CHI' => 'I',
'TKELE-CHO-G' => 'J',
'AH-YA-TSINNE' => 'J',
'YIL-DOI' => 'J',
'JAD-HO-LONI' => 'K',
'BA-AH-NE-DI-TININ' => 'K',
'KLIZZIE-YAZZIE' => 'K',
'DIBEH-YAZZIE' => 'L',
'AH-JAD' => 'L',
'NASH-DOIE-TSO' => 'L',
'TSIN-TLITI' => 'M',
'BE-TAS-TNI' => 'M',
'NA-AS-TSO-SI' => 'M',
'TSAH' => 'N',
'A-CHIN' => 'N',
'A-KHA' => 'O',
'TLO-CHIN' => 'O',
'NE-AHS-JAH' => 'O',
'CLA-GI-AIH' => 'P',
'BI-SO-DIH' => 'P',
'NE-ZHONI' => 'P',
'CA-YEILTH' => 'Q',
'GAH' => 'R',
'DAH-NES-TSA' => 'R',
'AH-LOSZ' => 'R',
'DIBEH' => 'S',
'KLESH' => 'S',
'D-AH' => 'T',
'A-WOH' => 'T',
'THAN-ZIE' => 'T',
'SHI-DA' => 'U',
'NO-DA-IH' => 'U',
'A-KEH-KI-GLINI' => 'V',
'GLOE-IH' => 'W',
'AL-NA-AS-DZOH' => 'X',
'TSAH-AS-ZIH' => 'Y',
'BESH-DO-TLIZ' => 'Z');
my %CDICT = ('CORPS' => 'DIN-NEH-IH',
'DIVISION' => 'ASHIH-HI',
'REGIMENT' => 'TABAHA',
'BATTALION' => 'TACHEENE',
'COMPANY' => 'NAKIA',
'PLATOON' => 'HAS-CLISH-NIH',
'SECTION' => 'YO-IH',
'SQUAD' => 'DEBEH-LI-ZINI',
'COMMANDING GENERAL' => 'BIH-KEH-HE',
'MAJOR GENERAL' => 'SO-NA-KIH',
'BIRGADIER GENERAL' => 'SO-A-LA-IH',
'COLONEL' => 'ATSAH-BESH-LE-GAI',
'LIEUTENANT COLONEL' => 'CHE-CHIL-BE-TAH-BESH-LEGAI',
'MAJOR' => 'CHE-CHIL-BE-TAH-OLA',
'CAPTAIN' => 'BESH-LEGAI-NAH-KIH',
'LIEUTENANT' => 'BESH-LEGAI-A-LAH-IH',
'COMMANDING OFFICER' => 'HASH-KAY-GI-NA-TAH',
'EXECUTIVE OFFICER' => 'BIH-DA-HOL-NEHI',
'AFRICA' => 'ZHIN-NI',
'ALASKA' => 'BEH-HGA',
'AMERICA' => 'NE-HE-MAH',
'AUSTRALIA' => 'CHA-YES-DESI',
'BRITAIN' => 'TOH-TA',
'CHINA' => 'CEH-YEHS-BESI',
'FRANCE' => 'DA-GHA-HI',
'GERMANY' => 'BESH-BE-CHA-HE',
'ICELAND' => 'TKIN-KE-YAH',
'INDIA' => 'AH-LE-GAI',
'ITALY' => 'DOH-HA-CHI-YALI-TCHI',
'JAPAN' => 'BEH-NA-ALI-TSOSIE',
'PHILIPPINE' => 'KE-YAH-DA-NA-LHE',
'RUSSIA' => 'SILA-GOL-CHI-IH',
'SOUTH AMERICA' => 'SHA-DE-AH-NE-HI-MAH',
'SPAIN' => 'DEBA-DE-NIH',
'PLANES' => 'WO-TAH-DE-NE-IH',
'DIVE BOMBER' => 'GINI',
'TORPEDO PLANE' => 'TAS-CHIZZIE',
'OBS. PLANE' => 'NE-AS-JAH',
'FIGHTER PLANE' => 'DA-HE-TIH-HI',
'BOMBER PLANE' => 'JAY-SHO',
'PATROL PLANE' => 'GA-GIH',
'TRANSPORT PLANE' => 'ATSAH',
'SHIPS' => 'TOH-DINEH-IH',
'BATTLESHIP' => 'LO-TSO',
'AIRCRAFT' => 'TSINI-MOFFA-YE-HI',
'SUBMARINE' => 'BESH-LO',
'MINE SWEEPER' => 'CHA',
'DESTROYER' => 'CHA-LO',
'TRANSPORT SHIP' => 'DINEH-NAY-YE-HI',
'CRUISER' => 'LO-TSO-YAZZIE',
'MOSQUITO BOAT' => 'TSE-E',
'JANUARY' => 'ATSAH-BE-YAZ',
'FEBRUARY' => 'WOZ-CHEIND',
'MARCH' => 'TAH-CHILL',
'APRIL' => 'TAH-TSO',
'MAY' => 'TAH-TSOSIE',
'JUNE' => 'BE-NE-EH-EH-JAH-TSO',
'JULY' => 'BE-NE-TA-TSOSIE',
'AUGUST' => 'BE-NEEN-TA-TSO',
'SEPTEMBER' => 'GHAW-JIH',
'OCTOBER' => 'NIL-CHI-TSOSIE',
'NOVEMBER' => 'NIL-CHI-TSO',
'DECEMBER' => 'YAS-NIL-TES',
'ABANDON' => 'YE-TSAN',
'ABOUT' => 'WOLA-CHI-A-MOFFA-GAHN',
'ABREAST' => 'WOLA-CHEE-BE-YIED',
'ACCOMPLISH' => 'UL-SO',
'ACCORDING' => 'BE-KA-HO',
'ACKNOWLEDGE' => 'HANOT-DZIED',
'ACTION' => 'AH-HA-TINH',
'ACTIVITY' => 'AH-HA-TINH-Y',
'ADEQUATE' => 'BEH-GHA',
'ADDITION' => 'IH-HE-DE-NDEL',
'ADDRESS' => 'YI-CHIN-HA-TSE',
'ADJACENT' => 'BE-GAHI',
'ADJUST' => 'HAS-TAI-NEL-KAD',
'ADVANCE' => 'NAS-SEY',
'ADVISE' => 'NA-NETIN',
'AERIAL' => 'BE-ZONZ',
'AFFIRMATIVE' => 'LANH',
'AFTER' => 'BI-KHA-DI',
'AGAINST' => 'BE-NA-GNISH',
'AID' => 'EDA-ELE-TSOOD',
'AIR' => 'NILCHI',
'AIRDOME' => 'NILCHI-BEGHAN',
'ALERT' => 'HA-IH-DES-EE',
'ALL' => 'TA-A-TAH',
'ALLIES' => 'NIH-HI-CHO',
'ALONG' => 'WOLACHEE-SNEZ',
'ALSO' => 'EH-DO',
'ALTERNATE' => 'NA-KEE-GO-NE-NAN-DEY-HE',
'AMBUSH' => 'KHAC-DA',
'AMMUNITION' => 'BEH-ELI-DOH-BE-CAH-ALI-TAS-AI',
'AMPHIBIOUS' => 'CHAL',
'AND' => 'DO',
'ANGLE' => 'DEE-CAHN',
'ANNEX' => 'IH-NAY-TANI',
'ANNOUNCE' => 'BEH-HA-O-DZE',
'ANTI' => 'WOL-LA-CHEE-TSIN',
'ANTICIPATE' => 'NI-JOL-LIH',
'ANY' => 'TAH-HA-DAH',
'APPEAR' => 'YE-KA-HA-YA',
'APPROACH' => 'BI-CHI-OL-DAH',
'APPROXIMATE' => 'TO-KUS-DAN',
'ARE' => 'GAH-TSO-BIG',
'AREA' => 'HAZ-A-GIH',
'ARMOR' => 'BESH-YE-HA-DA-DI-TEH',
'ARMY' => 'LEI-CHA-IH-YIL-KNEE-IH',
'ARRIVE' => 'IL-DAY',
'ARTILLERY' => 'BE-AL-DOH-TSO-LANI',
'AS' => 'AHCE',
'ASSAULT' => 'ALTSEH-E-JAH-HE',
'ASSEMBLE' => 'DE-JI-KASH',
'ASSIGN' => 'BAH-DEH-TAHN',
'AT' => 'AH-DI',
'ATTACK' => 'AL-TAH-JE-JAY',
'ATTEMPT' => 'BO-O-NE-TAH',
'ATTENTION' => 'GIHA',
'AUTHENTICATOR' => 'HANI-BA-AH-HO-ZIN',
'AUTHORIZE' => 'BE-BO-HO-SNEE',
'AVAILABLE' => 'TA-SHOZ-TEH-IH',
'BAGGAGE' => 'KLAILH',
'BANZAI' => 'NE-TAH',
'BARGE' => 'BESH-NA-ELT',
'BARRAGE' => 'BESH-BA-WA-CHIND',
'BARRIER' => 'BIH-CHAN-NI-AH',
'BASE' => 'BIH-TSEE-DIH',
'BATTERY' => 'BIH-BE-AL-DOH-TKA-IH',
'BATTLE' => 'DA-AH-HI-DZI-TSIO',
'BAY' => 'TOH-AH-HI-GHINH',
'BAZOOKA' => 'AH-ZHOL',
'BE' => 'TSES-NAH',
'BEACH' => 'TAH-BAHN',
'BEEN' => 'TSES-NAH-NES-CHEE',
'BEFORE' => 'BIH-TSE-DIH',
'BEGIN' => 'HA-HOL-ZIZ',
'BELONG' => 'TSES-NAH-SNEZ',
'BETWEEN' => 'BI-TAH-KIZ',
'BEYOND' => 'BILH-LA',
'BIVOUAC' => 'EHL-NAS-TEH',
'BOMB' => 'A-YE-SHI',
'BOOBY' => 'TRAP',
'BORNE' => 'YE-CHIE-TSAH',
'BOUNDARY' => 'KA-YAH-BI-NA-HAS-DZOH',
'BULL' => 'DOZER',
'BUNKER' => 'TSAS-KA',
'BUT' => 'NEH-DIH',
'BY' => 'BE-GHA',
'CABLE' => 'BESH-LKOH',
'CALIBER' => 'NAHL-KIHD',
'CAMP' => 'TO-ALTSEH-HOGAN',
'CAMOUFLAGE' => 'DI-NES-IH',
'CAN' => 'YAH-DI-ZINI',
'CANNONEER' => 'BE-AL-DOH-TSO-DEY-DIL-DON-IGI',
'CAPACITY' => 'BE-NEL-AH',
'CAPTURE' => 'YIS-NAH',
'CARRY' => 'YO-LAILH',
'CASE' => 'BIT-SAH',
'CASUALTY' => 'BIH-DIN-NE-DEY',
'CAUSE' => 'BI-NIH-NANI',
'CAVE' => 'TSA-OND',
'CEILING' => 'DA-TEL-JAY',
'CEMETARY' => 'JISH-CHA',
'CENTER' => 'ULH-NE-IH',
'CHANGE' => 'THLA-GO-A-NAT-ZAH',
'CHANNEL' => 'HA-TALHI-YAZZIE',
'CHARGE' => 'AH-TAH-GI-JAH',
'CHEMICAL' => 'TA-NEE',
'CIRCLE' => 'NAS-PAS',
'CIRCUIT' => 'AH-HEH-HA-DAILH',
'CLASS' => 'ALTH-AH-A-TEH',
'CLEAR' => 'YO-AH-HOL-ZHOD',
'CLIFF' => 'TSE-YE-CHEE',
'CLOSE' => 'UL-CHI-UH-NAL-YAH',
'COAST' => 'GUARD',
'CODE' => 'YIL-TAS',
'COLON' => 'NAKI-ALH--DEH-DA-AL-ZHIN',
'COLUMN' => 'ALTH-KAY-NE-ZIH',
'COMBAT' => 'DA-AH-HI-JIH-GANH',
'COMBINATION' => 'AL-TKAS-EI',
'COME' => 'HUC-QUO',
'COMMA' => 'TSA-NA-DAHL',
'COMMERCIAL' => 'NAI-EL-NE-HI',
'COMMIT' => 'HUC-QUO-LA-JISH',
'COMMUNICATION' => 'HA-NEH-AL-ENJI',
'CONCEAL' => 'BE-KI-ASZ-JOLE',
'CONCENTRATION' => 'TA-LA-HI-JIH',
'CONCUSSION' => 'WHE-HUS-DIL',
'CONDITION' => 'AH-HO-TAI',
'CONFERENCE' => 'BE-KE-YA-TI',
'CONFIDENTIAL' => 'NA-NIL-IN',
'CONFIRM' => 'TA-A-NEH',
'CONQUER' => 'A-KEH-DES-DLIN',
'CONSIDER' => 'NE-TSA-CAS',
'CONSIST' => 'BILH',
'CONSOLIDATE' => 'AH-HIH-HI-NIL',
'CONSTRUCT' => 'AHL-NEH',
'CONTACT' => 'AH-HI-DI-DAIL',
'CONTINUE' => 'TA-YI-TEH',
'CONTROL' => 'NAI-GHIZ',
'CONVOY' => 'TKAL-KAH-O-NEL',
'COORDINATE' => 'BEH-EH-HO-ZIN-NA-AS-DZOH',
'COUNTER' => 'ATTACK',
'COURSE' => 'CO-JI-GOH',
'CRAFT' => 'AH-TOH',
'CREEK' => 'TOH-NIL-TSANH',
'CROSS' => 'AL-N-AS-DZOH',
'CUB' => 'SHUSH-YAHZ',
'DASH' => 'US-DZOH',
'DAWN' => 'HA-YELI-KAHN',
'DEFENSE' => 'AH-KIN-CIL-TOH',
'DEGREE' => 'NAHL-KIHD',
'DELAY' => 'BE-SITIHN',
'DELIVER' => 'BE-BIH-ZIHDE',
'DEMOLITION' => 'AH-DEEL-TAHI',
'DENSE' => 'HO-DILH-CLA',
'DEPART' => 'DA-DE-YAH',
'DEPARTMENT' => 'HOGAN',
'DESIGNATE' => 'YE-KHI-DEL-NEI',
'DESPERATE' => 'AH-DA-AH-HO-DZAH',
'DETACH' => 'AL-CHA-NIL',
'DETAIL' => 'BE-BEH-SHA',
'DETONATOR' => 'AH-DEEL-TAHI',
'DIFFICULT' => 'NA-NE-KLAH',
'DIG' => 'IN',
'DIRECT' => 'AH-JI-GO',
'DISEMBARK' => 'EH-HA-JAY',
'DISPATCH' => 'LA-CHAI-EN-SEIS-BE-JAY',
'DISPLACE' => 'HIH-DO-NAL',
'DISPLAY' => 'BE-SEIS-NA-NEH',
'DISPOSITION' => 'A-HO-TEY',
'DISTRIBUTE' => 'NAH-NEH',
'DISTRICT' => 'BE-THIN-YA-NI-CHE',
'DO' => 'TSE-LE',
'DOCUMENT' => 'BEH-EH-HO-ZINZ',
'DRIVE' => 'AH-NOL-KAHL',
'DUD' => 'DI-GISS-YAHZIE',
'DUMMY' => 'DI-GISS-TSO',
'EACH' => 'TA-LAHI-NE-ZINI-GO',
'ECHELON' => 'WHO-DZAH',
'EDGE' => 'BE-BA-HI',
'EFFECTIVE' => 'BE-DELH-NEED',
'EFFORT' => 'YEA-GO',
'ELEMENT' => 'AH-NA-NAI',
'ELEVATE' => 'ALI-KHI-HO-NE-OHA',
'ELIMINATE' => 'HA-BEH-TO-DZIL',
'EMBARK' => 'EH-HO-JAY',
'EMERGENCY' => 'HO-NEZ-CLA',
'EMPLACEMENT' => 'LA-AZ-NIL',
'ENCIRCLE' => 'YE-NAS-TEH',
'ENCOUNTER' => 'BI-KHANH',
'ENGAGE' => 'A-HA-NE-HO-TA',
'ENGINE' => 'CHIDI-BI-TSI-TSINE',
'ENGINEER' => 'DAY-DIL-JAH-HE',
'ENLARGE' => 'NIH-TSA-GOH-AL-NEH',
'ENLIST' => 'BIH-ZIH-A-DA-YI-LAH',
'ENTIRE' => 'TA-A-TAH',
'ENTRENCH' => 'E-GAD-AH-NE-LIH',
'ENVELOP' => 'A-ZAH-GI-YA',
'EQUIPMENT' => 'YA-HA-DE-TAHI',
'ERECT' => 'YEH-ZIHN',
'ESCAPE' => 'A-ZEH-HA-GE-YAH',
'ESTABLISH' => 'HAS-TAY-DZAH',
'ESTIMATE' => 'BIH-KE-TSE-HOD-DES-KEZ',
'EVACUATE' => 'HA-NA',
'EXCEPT' => 'NEH-DIH',
'EXCEPT' => 'NA-WOL-NE',
'EXCHANGE' => 'ALH-NAHL-YAH',
'EXECUTE' => 'A-DO-NIL',
'EXPLOSIVE' => 'AH-DEL-TAHI',
'EXPEDITE' => 'SHIL-LOH',
'EXTEND' => 'NE-TDALE',
'EXTREME' => 'AL-TSAN-AH-BAHM',
'FAIL' => 'CHA-AL-EIND',
'FAILURE' => 'YEES-GHIN',
'FARM' => 'MAI-BE-HE-AHGAN',
'FEED' => 'DZEH-CHI-YON',
'FIELD' => 'CLO-DIH',
'FIERCE' => 'TOH-BAH-HA-ZSID',
'FILE' => 'BA-EH-CHEZ',
'FINAL' => 'TAH-AH-KWO-DIH',
'FLAME' => 'THROWER',
'FLANK' => 'DAH-DI-KAD',
'FLARE' => 'WO-CHI',
'FLIGHT' => 'MA-E-AS-ZLOLI',
'FORCE' => 'TA-NA-NE-LADI',
'FORM' => 'BE-CHA',
'FORMATION' => 'BE-CHA-YE-LAILH',
'FORTIFICATION' => 'AH-NA-SOZI',
'FORTIFY' => 'AH-NA-SOZI-YAZZIE',
'FORWARD' => 'TEHI',
'FRAGMENTATION' => 'BESH-YAZZIE',
'FREQUENCY' => 'HA-TALHI-TSO',
'FRIENDLY' => 'NEH-HECHO-DA-NE',
'FROM' => 'BI-TSAN-DEHN',
'FURNISH' => 'YEAS-NIL',
'FURTHER' => 'WO-NAS-DI',
'GARRISON' => 'YAH-A-DA-HAL-YON-IH',
'GASOLINE' => 'CHIDI-BI-TOH',
'GRENADE' => 'NI-MA-SI',
'GUARD' => 'NI-DIH-DA-HI',
'GUIDE' => 'NAH-E-THLAI',
'HALL' => 'LHI-TA-A-TA',
'HALF' => 'TRACK',
'HALT' => 'TA-AKWAI-I',
'HANDLE' => 'BET-SEEN',
'HAVE' => 'JO',
'HEADQUARTER' => 'NA-HA-TAH-TA-BA-HOGAN',
'HELD' => 'WO-TAH-TA-EH-DAHN-OH',
'HIGH' => 'WO-TAH',
'HIGH' => 'EXPLOSIVE',
'HIGHWAY' => 'WO-TAH-HO-NE-TEH',
'HOLD' => 'WO-TKANH',
'HOSPITAL' => 'A-ZEY-AL-IH',
'HOSTILE' => 'A-NAH-NE-DZIN',
'HOWITZER' => 'BE-EL-DON-TS-QUODI',
'ILLUMINATE' => 'WO-CHI',
'IMMEDIATELY' => 'SHIL-LOH',
'IMPACT' => 'A-HE-DIS-GOH',
'IMPORTANT' => 'BA-HAS-TEH',
'IMPROVE' => 'HO-DOL-ZHOND',
'INCLUDE' => 'EL-TSOD',
'INCREASE' => 'HO-NALH',
'INDICATE' => 'BA-HAL-NEH',
'INFANTRY' => 'TA-NEH-NAL-DAHI',
'INFILTRATE' => 'YE-GHA-NE-JEH',
'INITIAL' => 'BEH-ED-DE-DLID',
'INSTALL' => 'EHD-TNAH',
'INSTALLATION' => 'NAS-NIL',
'INSTRUCT' => 'NA-NE-TGIN',
'INTELLIGENCE' => 'HO-YA',
'INTENSE' => 'DZEEL',
'INTERCEPT' => 'YEL-NA-ME-JAH',
'INTERFERE' => 'AH-NILH-KHLAI',
'INTERPRET' => 'AH-TAH-HA-NE',
'INVESTIGATE' => 'NA-ALI-KA',
'INVOLVE' => 'A-TAH',
'IS' => 'SEIS',
'ISLAND' => 'SEIS-KEYAH',
'ISOLATE' => 'BIH-TSA-NEL-KAD',
'JUNGLE' => 'WOH-DI-CHIL',
'KILL' => 'NAZ-TSAID',
'KILOCYCLE' => 'NAS-TSAID-A-KHA-AH-YEH-',
'LABOR' => 'NA-NISH',
'LAND' => 'KAY-YAH',
'LAUNCH' => 'TKA-GHIL-ZHOD',
'LEADER' => 'AH-NA-GHAI',
'LEAST' => 'DE-BE-YAZIE-HA-A-AH',
'LEAVE' => 'DAH-DE-YAH',
'LEFT' => 'NISH-CLA-JIH-GOH',
'LESS' => 'BI-OH',
'LEVEL' => 'DIL-KONH',
'LIAISON' => 'DA-A-HE-GI-ENEH',
'LIMIT' => 'BA-HAS-AH',
'LITTER' => 'NI-DAS-TON',
'LOCATE' => 'A-KWE-EH',
'LOSS' => 'UT-DIN',
'MACHINE' => 'GUN',
'MAGNETIC' => 'NA-E-LAHI',
'MANAGE' => 'HASTNI-BEH-NA-HAI',
'MANEUVER' => 'NA-NA-O-NALTH',
'MAP' => 'KAH-YA-NESH-CHAI',
'MAXIMUM' => 'BEL-DIL-KHON',
'MECHANIC' => 'CHITI-A-NAYL-INIH',
'MECHANIZED' => 'CHIDI-DA-AH-HE-GONI',
'MEDICAL' => 'A-ZAY',
'MEGACYCLE' => 'MIL-AH-HEH-AH-DILH',
'MERCHANT' => 'SHIP',
'MESSAGE' => 'HANE-AL-NEH',
'MILITARY' => 'SILAGO-KEH-GOH',
'MILLIMETER' => 'NA-AS-TSO-SI-A-YE-DO-TISH',
'MINE' => 'HA-GADE',
'MINIMUM' => 'BE-OH',
'MINUTE' => 'AH-KHAY-EL-KIT-YAZZIE',
'MISSION' => 'AL-NESHODI',
'MISTAKE' => 'O-ZHI',
'MOPPING' => 'HA-TAO-DI',
'MORE' => 'THLA-NA-NAH',
'MORTAR' => 'BE-AL-DOH-CID-DA-HI',
'MOTION' => 'NA-HOT-NAH',
'MOTOR' => 'CHIDE-BE-TSE-TSEN',
'NATIVE' => 'KA-HA-TENI',
'NAVY' => 'TAL-KAH-SILAGO',
'NECESSARY' => 'YE-NA-ZEHN',
'NEGATIVE' => 'DO-YA-SHO-DA',
'NET' => 'NA-NES-DIZI',
'NEUTRAL' => 'DO-NEH-LINI',
'NORMAL' => 'DOH-A-TA-H-DAH',
'NOT' => 'NI-DAH-THAN-ZIE',
'NOTICE' => 'NE-DA-TAZI-THIN',
'NOW' => 'KUT',
'NUMBER' => 'BEH-BIH-KE-AS-CHINIGH',
'OBJECTIVE' => 'BI-NE-YEI',
'OBSERVE' => 'HAL-ZID',
'OBSTACLE' => 'DA-HO-DESH-ZHA',
'OCCUPY' => 'YEEL-TSOD',
'OF' => 'TOH-NI-TKAL-LO',
'OFFENSIVE' => 'BIN-KIE-JINH-JIH-DEZ-JAY',
'ONCE' => 'TA-LAI-DI',
'ONLY' => 'TA-EI-TAY-A-YAH',
'OPERATE' => 'YE-NAHL-NISH',
'OPPORTUNITY' => 'ASH-GA-ALIN',
'OPPOSITION' => 'NE-HE-TSAH-JIH-SHIN',
'OR' => 'EH-DO-DAH-GOH',
'ORANGE' => 'TCHIL-LHE-SOI',
'ORDER' => 'BE-EH-HO-ZINI',
'ORDNANCE' => 'LEI-AZ-JAH',
'ORIGINATE' => 'DAS-TEH-DO',
'OTHER' => 'LA-E-CIH',
'OUT' => 'CLO-DIH',
'OVERLAY' => 'BE-KA-HAS-TSOZ',
'PARENTHESIS' => 'ATSANH',
'PARTICULAR' => 'A-YO-AD-DO-NEH',
'PARTY' => 'DA-SHA-JAH',
'PAY' => 'NA-ELI-YA',
'PENALIZE' => 'TAH-NI-DES-TANH',
'PERCENT' => 'YAL',
'PERIOD' => 'DA-AHL-ZHIN',
'PERIODIC' => 'DA-AL-ZHIN-THIN-MOASI',
'PERMIT' => 'GOS-SHI-E',
'PERSONNEL' => 'DA-NE-LEI',
'PHOTOGRAPH' => 'BEH-CHI-MA-HAD-NIL',
'PILL' => 'BOX',
'PINNED' => 'DOWN',
'PLANE' => 'TSIDI',
'PLASMA' => 'DIL-DI-GHILI',
'POINT' => 'BE-SO-DE-DEZ-AHE',
'PONTOON' => 'TKOSH-JAH-DA-NA-ELT',
'POSITION' => 'BILH-HAS-AHN',
'POSSIBLE' => 'TA-HA-AH-TAY',
'POST' => 'SAH-DEI',
'PREPARE' => 'HASH-TAY-HO-DIT-NE',
'PRESENT' => 'KUT',
'PREVIOUS' => 'BIH-TSE-DIH',
'PRIMARY' => 'ALTSEH-NAN-DAY-HI-GIH',
'PRIORITY' => 'HANE-PESODI',
'PROBABLE' => 'DA-TSI',
'PROBLEM' => 'NA-NISH-TSOH',
'PROCEED' => 'NAY-NIH-JIH',
'PROGRESS' => 'NAH-SAI',
'PROTECT' => 'AH-CHANH',
'PROVIDE' => 'YIS-NIL',
'PURPLE' => 'DINL-CHI',
'PYROTECHNIC' => 'COH-NA-CHANH',
'QUESTION' => 'AH-JAH',
'QUICK' => 'SHIL-LOH',
'RADAR' => 'ESAT-TSANH',
'RAID' => 'DEZJAY',
'RAILHEAD' => 'A-DE-GEH-HI',
'RAILROAD' => 'KONH-NA-AL-BANSI-BI-THIN',
'RALLYING' => 'A-LAH-NA-O-GLALIH',
'RANGE' => 'AN-ZAH',
'RATE' => 'GAH-EH-YAHN',
'RATION' => 'NA-A-JAH',
'RAVINE' => 'CHUSH-KA',
'REACH' => 'IL-DAY',
'READY' => 'KUT',
'REAR' => 'BE-KA-DENH',
'RECEIPT' => 'SHOZ-TEH',
'RECOMMEND' => 'CHE-HO-TAI-TAHN',
'RECONNAISSANCE' => 'HA-A-CIDI',
'RECONNOITER' => 'TA-HA-NE-AL-YA',
'RECORD' => 'GAH-AH-NAH-KLOLI',
'RED' => 'LI-CHI',
'REEF' => 'TSA-ZHIN',
'REEMBARK' => 'EH-NA-COH',
'REFIRE' => 'NA-NA-COH',
'REGULATE' => 'NA-YEL-N',
'REINFORCE' => 'NAL-DZIL',
'RELIEF' => 'AGANH-TOL-JAY',
'RELIEVE' => 'NAH-JIH-CO-NAL-YA',
'REORGANIZE' => 'HA-DIT-ZAH',
'REPLACEMENT' => 'NI-NA-DO-NIL',
'REPORT' => 'WHO-NEH',
'REPRESENTATIVE' => 'TKA-NAZ-NILI',
'REQUEST' => 'JO-KAYED-GOH',
'RESERVE' => 'HESH-J-E',
'RESTRICT' => 'BA-HO-CHINI',
'RETIRE' => 'AH-HOS-TEEND',
'RETREAT' => 'JI-DIN-NES-CHANH',
'RETURN' => 'NA-DZAH',
'REVEAL' => 'WHO-NEH',
'REVERT' => 'NA-SI-YIZ',
'REVETMENT' => 'BA-NAS-CLA',
'RIDGE' => 'GAH-GHIL-KEID',
'RIFLEMAN' => 'BE-AL-DO-HOSTEEN',
'RIVER' => 'TOH-YIL-KAL',
'ROBOT' => 'BOMB',
'ROCKET' => 'LESZ-YIL-BESHI',
'ROLL' => 'YEH-MAS',
'ROUND' => 'NAZ-PAS',
'ROUTE' => 'GAH-BIH-TKEEN',
'RUNNER' => 'NIH-DZID-TEIH',
'SABOTAGE' => 'A-TKEL-YAH',
'SABOTEUR' => 'A-TKEL-EL-INI',
'SAILOR' => 'CHA-LE-GAI',
'SALVAGE' => 'NA-HAS-GLAH',
'SAT' => 'BIH-LA-SANA-CID-DA-HI',
'SCHEDULE' => 'BEH-EH-HO-ZINI',
'SCOUT' => 'HA-A-SID-AL-SIZI-GIH',
'SCREEN' => 'BESH-NA-NES-DIZI',
'SEAMAN' => 'TKAL-KAH-DINEH-IH',
'SECRET' => 'BAH-HAS-TKIH',
'SECTOR' => 'YOEHI',
'SECURE' => 'YE-DZHE-AL-TSISI',
'SEIZE' => 'YEEL-STOD',
'SELECT' => 'BE-TAH-HAS-GLA',
'SEMI' => 'COLON',
'SET' => 'DZEH-CID-DA-HI',
'SHACKLE' => 'DI-BAH-NESH-GOHZ',
'SHELL' => 'BE-AL-DOH-BE-CA',
'SHORE' => 'TAH-BAHN',
'SHORT' => 'BOSH-KEESH',
'SIDE' => 'BOSH-KEESH',
'SIGHT' => 'YE-EL-TSANH',
'SIGNAL' => 'NA-EH-EH-GISH',
'SIMPLEX' => 'ALAH-IH-NE-TIH',
'SIT' => 'TKIN-CID-DA-HI',
'SITUATE' => 'A-HO-TAY',
'SMOKE' => 'LIT',
'SNIPER' => 'OH-BEHI',
'SPACE' => 'BE-TKAH',
'SPECIAL' => 'E-YIH-SIH',
'SPEED' => 'YO-ZONS',
'SPORADIC' => 'AH-NA-HO-NEIL',
'SPOTTER' => 'EEL-TSAY-I',
'SPRAY' => 'KLESH-SO-DILZIN',
'SQUADRON' => 'NAH-GHIZI',
'STORM' => 'NE-OL',
'STRAFF' => 'NA-WO-GHI-GOID',
'STRAGGLER' => 'CHY-NE-DE-DAHE',
'STRATEGY' => 'NA-HA-TAH',
'STREAM' => 'TOH-NI-LIH',
'STRENGTH' => 'DZHEL',
'STRETCH' => 'DESZ-TSOOD',
'STRIKE' => 'NAY-DAL-GHAL',
'STRIP' => 'HA-TIH-JAH',
'STUBBORN' => 'NIL-TA',
'SUBJECT' => 'NA-NISH-YAZZIE',
'SUBMERGE' => 'TKAL-CLA-YI-YAH',
'SUBMIT' => 'A-NIH-LEH',
'SUBORDINATE' => 'AL-KHI-NAL-DZL',
'SUCCEED' => 'YAH-TAY-GO-E-ELAH',
'SUCCESS' => 'UT-ZAH',
'SUCCESSFUL' => 'UT-ZAH-HA-DEZ-BIN',
'SUCCESSIVE' => 'UT-ZAH-SID',
'SUCH' => 'YIS-CLEH',
'SUFFER' => 'TO-HO-NE',
'SUMMARY' => 'SHIN-GO-BAH',
'SUPPLEMENTARY' => 'TKA-GO-NE-NAN-DEY-HE',
'SUPPLY' => 'NAL-YEH-HI',
'SUPPLY' => 'SHIP',
'SUPPORT' => 'BA-AH-HOT-GLI',
'SURRENDER' => 'NE-NA-CHA',
'SURROUND' => 'NAZ-PAS',
'SURVIVE' => 'YIS-DA-YA',
'SYSTEM' => 'DI-BA-TSA-AS-ZHI-BI-TSIN',
'TACTICAL' => 'E-CHIHN',
'TAKE' => 'GAH-TAHN',
'TANK' => 'CHAY-DA-GAHI',
'TANK' => 'DESTROYER',
'TARGET' => 'WOL-DONI',
'TASK' => 'TAZI-NA-EH-DIL-KID',
'TEAM' => 'DEH-NA-AS-TSO-SI',
'TERRACE' => 'ALI-KHI-HO-NE-OHA',
'TERRAIN' => 'TASHI-NA-HAL-THIN',
'TERRITORY' => 'KA-YAH',
'THAT' => 'TAZI-CHA',
'THE' => 'CHA-GEE',
'THEIR' => 'BIH',
'THEREAFTER' => 'TA-ZI-KWA-I-BE-KA-DI',
'THESE' => 'CHA-GI-O-EH',
'THEY' => 'CHA-GEE',
'THIS' => 'DI',
'TOGETHER' => 'TA-BILH',
'TORPEDO' => 'LO-BE-CA',
'TOTAL' => 'TA-AL-SO',
'TRACER' => 'BEH-NA-AL-KAH-HI',
'TRAFFIC' => 'DIAGRAM',
'TRAIN' => 'COH-NAI-ALI-BAHN-SI',
'TRANSPORTATION' => 'A-HAH-DA-A-CHA',
'TRENCH' => 'E-GADE',
'TRIPLE' => 'TKA-IH',
'TROOP' => 'NAL-DEH-HI',
'TRUCK' => 'CHIDO-TSO',
'TYPE' => 'ALTH-AH-A-TEH',
'UNDER' => 'BI-YAH',
'UNIDENTIFIED' => 'DO-BAY-HOSEN-E',
'UNIT' => 'DA-AZ-JAH',
'UNSHACKLE' => 'NO-DA-EH-NESH-GOHZ',
'UNTIL' => 'UH-QUO-HO',
'VICINITY' => 'NA-HOS-AH-GIH',
'VILLAGE' => 'CHAH-HO-OH-LHAN-IH',
'VISIBILITY' => 'NAY-ES-TEE',
'VITAL' => 'TA-EH-YE-SY',
'WARNING' => 'BILH-HE-NEH',
'WAS' => 'NE-TEH',
'WATER' => 'TKOH',
'WAVE' => 'YILH-KOLH',
'WEAPON' => 'BEH-DAH-A-HI-JIH-GANI',
'WELL' => 'TO-HA-HA-DLAY',
'WHEN' => 'GLOE-EH-NA-AH-WO-HAI',
'WHERE' => 'GLOE-IH-QUI-AH',
'WHICH' => 'GLOE-IH-A-HSI-TLON',
'WILL' => 'GLOE-IH-DOT-SAHI',
'WIRE' => 'BESH-TSOSIE',
'WITH' => 'BILH',
'WITHIN' => 'BILH-BIGIH',
'WITHOUT' => 'TA-GAID',
'WOOD' => 'CHIZ',
'WOUND' => 'CAH-DA-KHI',
'YARD' => 'A-DEL-TAHL',
'ZONE' => 'BIH-NA-HAS-DZOH');
my %DDICT = ('DIN-NEH-IH' => 'CORPS',
'ASHIH-HI' => 'DIVISION',
'TABAHA' => 'REGIMENT',
'TACHEENE' => 'BATTALION',
'NAKIA' => 'COMPANY',
'HAS-CLISH-NIH' => 'PLATOON',
'YO-IH' => 'SECTION',
'DEBEH-LI-ZINI' => 'SQUAD',
'GEN' => 'COMMANDING',
'GEN' => 'MAJOR',
'GEN' => 'BRIGADIER',
'ATSAH-BESH-LE-GAI' => 'COLONEL',
'CHE-CHIL-BE-TAH-OLA' => 'MAJOR',
'BESH-LEGAI-NAH-KIH' => 'CAPTAIN',
'BESH-LEGAI-A-LAH-IH' => 'LIEUTENANT',
'OFFICER' => 'COMMANDING',
'OFFICER' => 'EXECUTIVE',
'ZHIN-NI' => 'AFRICA',
'BEH-HGA' => 'ALASKA',
'NE-HE-MAH' => 'AMERICA',
'CHA-YES-DESI' => 'AUSTRALIA',
'TOH-TA' => 'BRITAIN',
'CEH-YEHS-BESI' => 'CHINA',
'DA-GHA-HI' => 'FRANCE',
'BESH-BE-CHA-HE' => 'GERMANY',
'TKIN-KE-YAH' => 'ICELAND',
'AH-LE-GAI' => 'INDIA',
'DOH-HA-CHI-YALI-TCHI' => 'ITALY',
'BEH-NA-ALI-TSOSIE' => 'JAPAN',
'KE-YAH-DA-NA-LHE' => 'PHILIPPINE',
'SILA-GOL-CHI-IH' => 'RUSSIA',
'AMERICA' => 'SOUTH',
'DEBA-DE-NIH' => 'SPAIN',
'WO-TAH-DE-NE-IH' => 'PLANES',
'BOMBER' => 'DIVE',
'PLANE' => 'TORPEDO',
'PLANE' => 'FIGHTER',
'PLANE' => 'BOMBER',
'PLANE' => 'PATROL',
'ATSAH' => 'TRANSPORT',
'TOH-DINEH-IH' => 'SHIPS',
'LO-TSO' => 'BATTLESHIP',
'TSIDI-MOFFA-YE-HI' => 'AIRCRAFT',
'BESH-LO' => 'SUBMARINE',
'SWEEPER' => 'MINE',
'CA-LO' => 'DESTROYER',
'DINEH-NAY-YE-HI' => 'TRANSPORT',
'LO-TSO-YAZZIE' => 'CRUISER',
'BOAT' => 'MOSQUITO',
'ATSAH-BE-YAZ' => 'JANUARY',
'WOZ-CHEIND' => 'FEBRUARY',
'TAH-CHILL' => 'MARCH',
'TAH-TSO' => 'APRIL',
'TAH-TSOSIE' => 'MAY',
'BE-NE-EH-EH-JAH-TSO' => 'JUNE',
'BE-NE-TA-TSOSIE' => 'JULY',
'BE-NEEN-TA-TSO' => 'AUGUST',
'GHAW-JIH' => 'SEPTEMBER',
'NIL-CHI-TSOSIE' => 'OCTOBER',
'NIL-CHI-TSO' => 'NOVEMBER',
'YAS-NIL-TES' => 'DECEMBER',
'YE-TSAN' => 'ABANDON',
'WOLA-CHI-A-MOFFA-GAHN' => 'ABOUT',
'WOLA-CHEE-BE-YIED' => 'ABREAST',
'UL-SO' => 'ACCOMPLISH',
'BE-KA-HO' => 'ACCORDING',
'HANOT-DZIED' => 'ACKNOWLEDGE',
'AH-HA-TINH' => 'ACTION',
'AH-HA-TINH-Y' => 'ACTIVITY',
'BEH-GHA' => 'ADEQUATE',
'IH-HE-DE-NDEL' => 'ADDITION',
'YI-CHIN-HA-TSE' => 'ADDRESS',
'BE-GAHI' => 'ADJACENT',
'HAS-TAI-NEL-KAD' => 'ADJUST',
'NAS-SEY' => 'ADVANCE',
'NA-NETIN' => 'ADVISE',
'BE-ZONZ' => 'AERIAL',
'LANH' => 'AFFIRMATIVE',
'BI-KHA-DI' => 'AFTER',
'BE-NA-GNISH' => 'AGAINST',
'EDA-ELE-TSOOD' => 'AID',
'NILCHI' => 'AIR',
'NILCHI-BEGHAN' => 'AIRDOME',
'HA-IH-DES-EE' => 'ALERT',
'TA-A-TAH' => 'ALL',
'NIH-HI-CHO' => 'ALLIES',
'WOLACHEE-SNEZ' => 'ALONG',
'EH-DO' => 'ALSO',
'NA-KEE-GO-NE-NAN-DEY-HE' => 'ALTERNATE',
'KHAC-DA' => 'AMBUSH',
'BEH-ELI-DOH-BE-CAH-ALI-TAS-AI' => 'AMMUNITION',
'CHAL' => 'AMPHIBIOUS',
'DO' => 'AND',
'DEE-CAHN' => 'ANGLE',
'IH-NAY-TANI' => 'ANNEX',
'BEH-HA-O-DZE' => 'ANNOUNCE',
'WOL-LA-CHEE-TSIN' => 'ANTI',
'NI-JOL-LIH' => 'ANTICIPATE',
'TAH-HA-DAH' => 'ANY',
'YE-KA-HA-YA' => 'APPEAR',
'BI-CHI-OL-DAH' => 'APPROACH',
'TO-KUS-DAN' => 'APPROXIMATE',
'GAH-TSO' => 'ARE',
'HAZ-A-GIH' => 'AREA',
'BESH-YE-HA-DA-DI-TEH' => 'ARMOR',
'LEI-CHA-IH-YIL-KNEE-IH' => 'ARMY',
'IL-DAY' => 'ARRIVE',
'BE-AL-DOH-TSO-LANI' => 'ARTILLERY',
'AHCE' => 'AS',
'ALTSEH-E-JAH-HE' => 'ASSAULT',
'DE-JI-KASH' => 'ASSEMBLE',
'BAH-DEH-TAHN' => 'ASSIGN',
'AH-DI' => 'AT',
'AL-TAH-JE-JAY' => 'ATTACK',
'BO-O-NE-TAH' => 'ATTEMPT',
'GIHA' => 'ATTENTION',
'HANI-BA-AH-HO-ZIN' => 'AUTHENTICATOR',
'BE-BO-HO-SNEE' => 'AUTHORIZE',
'TA-SHOZ-TEH-IH' => 'AVAILABLE',
'KLAILH' => 'BAGGAGE',
'NE-TAH' => 'BANZAI',
'BESH-NA-ELT' => 'BARGE',
'BESH-BA-WA-CHIND' => 'BARRAGE',
'BIH-CHAN-NI-AH' => 'BARRIER',
'BIH-TSEE-DIH' => 'BASE',
'BIH-BE-AL-DOH-TKA-IH' => 'BATTERY',
'DA-AH-HI-DZI-TSIO' => 'BATTLE',
'TOH-AH-HI-GHINH' => 'BAY',
'AH-ZHOL' => 'BAZOOKA',
'TSES-NAH' => 'BE',
'TAH-BAHN' => 'BEACH',
'TSES-NAH-NES-CHEE' => 'BEEN',
'BIH-TSE-DIH' => 'BEFORE',
'HA-HOL-ZIZ' => 'BEGIN',
'TSES-NAH-SNEZ' => 'BELONG',
'BI-TAH-KIZ' => 'BETWEEN',
'BILH-LA' => 'BEYOND',
'EHL-NAS-TEH' => 'BIVOUAC',
'A-YE-SHI' => 'BOMB',
'TRAP' => 'BOOBY',
'YE-CHIE-TSAH' => 'BORNE',
'KA-YAH-BI-NA-HAS-DZOH' => 'BOUNDARY',
'DOZER' => 'BULL',
'TSAS-KA' => 'BUNKER',
'NEH-DIH' => 'BUT',
'BE-GHA' => 'BY',
'BESH-LKOH' => 'CABLE',
'NAHL-KIHD' => 'CALIBER',
'TO-ALTSEH-HOGAN' => 'CAMP',
'DI-NES-IH' => 'CAMOUFLAGE',
'YAH-DI-ZINI' => 'CAN',
'BE-AL-DOH-TSO-DEY-DIL-DON-IGI' => 'CANNONEER',
'BE-NEL-AH' => 'CAPACITY',
'YIS-NAH' => 'CAPTURE',
'YO-LAILH' => 'CARRY',
'BIT-SAH' => 'CASE',
'BIH-DIN-NE-DEY' => 'CASUALTY',
'BI-NIH-NANI' => 'CAUSE',
'TSA-OND' => 'CAVE',
'DA-TEL-JAY' => 'CEILING',
'JISH-CHA' => 'CEMETARY',
'ULH-NE-IH' => 'CENTER',
'THLA-GO-A-NAT-ZAH' => 'CHANGE',
'HA-TALHI-YAZZIE' => 'CHANNEL',
'AH-TAH-GI-JAH' => 'CHARGE',
'TA-NEE' => 'CHEMICAL',
'NAS-PAS' => 'CIRCLE',
'AH-HEH-HA-DAILH' => 'CIRCUIT',
'ALTH-AH-A-TEH' => 'CLASS',
'YO-AH-HOL-ZHOD' => 'CLEAR',
'TSE-YE-CHEE' => 'CLIFF',
'UL-CHI-UH-NAL-YAH' => 'CLOSE',
'GUARD' => 'COAST',
'YIL-TAS' => 'CODE',
'NAKI-ALH--DEH-DA-AL-ZHIN' => 'COLON',
'ALTH-KAY-NE-ZIH' => 'COLUMN',
'DA-AH-HI-JIH-GANH' => 'COMBAT',
'AL-TKAS-EI' => 'COMBINATION',
'HUC-QUO' => 'COME',
'TSA-NA-DAHL' => 'COMMA',
'NAI-EL-NE-HI' => 'COMMERCIAL',
'HUC-QUO-LA-JISH' => 'COMMIT',
'HA-NEH-AL-ENJI' => 'COMMUNICATION',
'BE-KI-ASZ-JOLE' => 'CONCEAL',
'TA-LA-HI-JIH' => 'CONCENTRATION',
'WHE-HUS-DIL' => 'CONCUSSION',
'AH-HO-TAI' => 'CONDITION',
'BE-KE-YA-TI' => 'CONFERENCE',
'NA-NIL-IN' => 'CONFIDENTIAL',
'TA-A-NEH' => 'CONFIRM',
'A-KEH-DES-DLIN' => 'CONQUER',
'NE-TSA-CAS' => 'CONSIDER',
'BILH' => 'CONSIST',
'AH-HIH-HI-NIL' => 'CONSOLIDATE',
'AHL-NEH' => 'CONSTRUCT',
'AH-HI-DI-DAIL' => 'CONTACT',
'TA-YI-TEH' => 'CONTINUE',
'NAI-GHIZ' => 'CONTROL',
'TKAL-KAH-O-NEL' => 'CONVOY',
'BEH-EH-HO-ZIN-NA-AS-DZOH' => 'COORDINATE',
'ATTACK' => 'COUNTER',
'CO-JI-GOH' => 'COURSE',
'AH-TOH' => 'CRAFT',
'TOH-NIL-TSANH' => 'CREEK',
'AL-N-AS-DZOH' => 'CROSS',
'SHUSH-YAHZ' => 'CUB',
'US-DZOH' => 'DASH',
'HA-YELI-KAHN' => 'DAWN',
'AH-KIN-CIL-TOH' => 'DEFENSE',
'NAHL-KIHD' => 'DEGREE',
'BE-SITIHN' => 'DELAY',
'BE-BIH-ZIHDE' => 'DELIVER',
'AH-DEEL-TAHI' => 'DEMOLITION',
'HO-DILH-CLA' => 'DENSE',
'DA-DE-YAH' => 'DEPART',
'HOGAN' => 'DEPARTMENT',
'YE-KHI-DEL-NEI' => 'DESIGNATE',
'AH-DA-AH-HO-DZAH' => 'DESPERATE',
'AL-CHA-NIL' => 'DETACH',
'BE-BEH-SHA' => 'DETAIL',
'AH-DEEL-TAHI' => 'DETONATOR',
'NA-NE-KLAH' => 'DIFFICULT',
'IN' => 'DIG',
'AH-JI-GO' => 'DIRECT',
'EH-HA-JAY' => 'DISEMBARK',
'LA-CHAI-EN-SEIS-BE-JAY' => 'DISPATCH',
'HIH-DO-NAL' => 'DISPLACE',
'BE-SEIS-NA-NEH' => 'DISPLAY',
'A-HO-TEY' => 'DISPOSITION',
'NAH-NEH' => 'DISTRIBUTE',
'BE-THIN-YA-NI-CHE' => 'DISTRICT',
'TSE-LE' => 'DO',
'BEH-EH-HO-ZINZ' => 'DOCUMENT',
'AH-NOL-KAHL' => 'DRIVE',
'DI-GISS-YAHZIE' => 'DUD',
'DI-GISS-TSO' => 'DUMMY',
'TA-LAHI-NE-ZINI-GO' => 'EACH',
'WHO-DZAH' => 'ECHELON',
'BE-BA-HI' => 'EDGE',
'BE-DELH-NEED' => 'EFFECTIVE',
'YEA-GO' => 'EFFORT',
'AH-NA-NAI' => 'ELEMENT',
'ALI-KHI-HO-NE-OHA' => 'ELEVATE',
'HA-BEH-TO-DZIL' => 'ELIMINATE',
'EH-HO-JAY' => 'EMBARK',
'HO-NEZ-CLA' => 'EMERGENCY',
'LA-AZ-NIL' => 'EMPLACEMENT',
'YE-NAS-TEH' => 'ENCIRCLE',
'BI-KHANH' => 'ENCOUNTER',
'A-HA-NE-HO-TA' => 'ENGAGE',
'CHIDI-BI-TSI-TSINE' => 'ENGINE',
'DAY-DIL-JAH-HE' => 'ENGINEER',
'NIH-TSA-GOH-AL-NEH' => 'ENLARGE',
'BIH-ZIH-A-DA-YI-LAH' => 'ENLIST',
'TA-A-TAH' => 'ENTIRE',
'E-GAD-AH-NE-LIH' => 'ENTRENCH',
'A-ZAH-GI-YA' => 'ENVELOP',
'YA-HA-DE-TAHI' => 'EQUIPMENT',
'YEH-ZIHN' => 'ERECT',
'A-ZEH-HA-GE-YAH' => 'ESCAPE',
'HAS-TAY-DZAH' => 'ESTABLISH',
'BIH-KE-TSE-HOD-DES-KEZ' => 'ESTIMATE',
'HA-NA' => 'EVACUATE',
'NEH-DIH' => 'EXCEPT',
'NA-WOL-NE' => 'EXCEPT',
'ALH-NAHL-YAH' => 'EXCHANGE',
'A-DO-NIL' => 'EXECUTE',
'AH-DEL-TAHI' => 'EXPLOSIVE',
'SHIL-LOH' => 'EXPEDITE',
'NE-TDALE' => 'EXTEND',
'AL-TSAN-AH-BAHM' => 'EXTREME',
'CHA-AL-EIND' => 'FAIL',
'YEES-GHIN' => 'FAILURE',
'MAI-BE-HE-AHGAN' => 'FARM',
'DZEH-CHI-YON' => 'FEED',
'CLO-DIH' => 'FIELD',
'TOH-BAH-HA-ZSID' => 'FIERCE',
'BA-EH-CHEZ' => 'FILE',
'TAH-AH-KWO-DIH' => 'FINAL',
'THROWER' => 'FLAME',
'DAH-DI-KAD' => 'FLANK',
'WO-CHI' => 'FLARE',
'MA-E-AS-ZLOLI' => 'FLIGHT',
'TA-NA-NE-LADI' => 'FORCE',
'BE-CHA' => 'FORM',
'BE-CHA-YE-LAILH' => 'FORMATION',
'AH-NA-SOZI' => 'FORTIFICATION',
'AH-NA-SOZI-YAZZIE' => 'FORTIFY',
'TEHI' => 'FORWARD',
'BESH-YAZZIE' => 'FRAGMENTATION',
'HA-TALHI-TSO' => 'FREQUENCY',
'NEH-HECHO-DA-NE' => 'FRIENDLY',
'BI-TSAN-DEHN' => 'FROM',
'YEAS-NIL' => 'FURNISH',
'WO-NAS-DI' => 'FURTHER',
'YAH-A-DA-HAL-YON-IH' => 'GARRISON',
'CHIDI-BI-TOH' => 'GASOLINE',
'NI-MA-SI' => 'GRENADE',
'NI-DIH-DA-HI' => 'GUARD',
'NAH-E-THLAI' => 'GUIDE',
'LHI-TA-A-TA' => 'HALL',
'TRACK' => 'HALF',
'TA-AKWAI-I' => 'HALT',
'BET-SEEN' => 'HANDLE',
'JO' => 'HAVE',
'NA-HA-TAH-TA-BA-HOGAN' => 'HEADQUARTER',
'WO-TAH-TA-EH-DAHN-OH' => 'HELD',
'WO-TAH' => 'HIGH',
'EXPLOSIVE' => 'HIGH',
'WO-TAH-HO-NE-TEH' => 'HIGHWAY',
'WO-TKANH' => 'HOLD',
'A-ZEY-AL-IH' => 'HOSPITAL',
'A-NAH-NE-DZIN' => 'HOSTILE',
'BE-EL-DON-TS-QUODI' => 'HOWITZER',
'WO-CHI' => 'ILLUMINATE',
'SHIL-LOH' => 'IMMEDIATELY',
'A-HE-DIS-GOH' => 'IMPACT',
'BA-HAS-TEH' => 'IMPORTANT',
'HO-DOL-ZHOND' => 'IMPROVE',
'EL-TSOD' => 'INCLUDE',
'HO-NALH' => 'INCREASE',
'BA-HAL-NEH' => 'INDICATE',
'TA-NEH-NAL-DAHI' => 'INFANTRY',
'YE-GHA-NE-JEH' => 'INFILTRATE',
'BEH-ED-DE-DLID' => 'INITIAL',
'EHD-TNAH' => 'INSTALL',
'NAS-NIL' => 'INSTALLATION',
'NA-NE-TGIN' => 'INSTRUCT',
'HO-YA' => 'INTELLIGENCE',
'DZEEL' => 'INTENSE',
'YEL-NA-ME-JAH' => 'INTERCEPT',
'AH-NILH-KHLAI' => 'INTERFERE',
'AH-TAH-HA-NE' => 'INTERPRET',
'NA-ALI-KA' => 'INVESTIGATE',
'A-TAH' => 'INVOLVE',
'SEIS' => 'IS',
'SEIS-KEYAH' => 'ISLAND',
'BIH-TSA-NEL-KAD' => 'ISOLATE',
'WOH-DI-CHIL' => 'JUNGLE',
'NAZ-TSAID' => 'KILL',
'NAS-TSAID-A-KHA-AH-YEH-' => 'KILOCYCLE',
'NA-NISH' => 'LABOR',
'KAY-YAH' => 'LAND',
'TKA-GHIL-ZHOD' => 'LAUNCH',
'AH-NA-GHAI' => 'LEADER',
'DE-BE-YAZIE-HA-A-AH' => 'LEAST',
'DAH-DE-YAH' => 'LEAVE',
'NISH-CLA-JIH-GOH' => 'LEFT',
'BI-OH' => 'LESS',
'DIL-KONH' => 'LEVEL',
'DA-A-HE-GI-ENEH' => 'LIAISON',
'BA-HAS-AH' => 'LIMIT',
'NI-DAS-TON' => 'LITTER',
'A-KWE-EH' => 'LOCATE',
'UT-DIN' => 'LOSS',
'GUN' => 'MACHINE',
'NA-E-LAHI' => 'MAGNETIC',
'HASTNI-BEH-NA-HAI' => 'MANAGE',
'NA-NA-O-NALTH' => 'MANEUVER',
'KAH-YA-NESH-CHAI' => 'MAP',
'BEL-DIL-KHON' => 'MAXIMUM',
'CHITI-A-NAYL-INIH' => 'MECHANIC',
'CHIDI-DA-AH-HE-GONI' => 'MECHANIZED',
'A-ZAY' => 'MEDICAL',
'MIL-AH-HEH-AH-DILH' => 'MEGACYCLE',
'SHIP' => 'MERCHANT',
'HANE-AL-NEH' => 'MESSAGE',
'SILAGO-KEH-GOH' => 'MILITARY',
'NA-AS-TSO-SI-A-YE-DO-TISH' => 'MILLIMETER',
'HA-GADE' => 'MINE',
'BE-OH' => 'MINIMUM',
'AH-KHAY-EL-KIT-YAZZIE' => 'MINUTE',
'AL-NESHODI' => 'MISSION',
'O-ZHI' => 'MISTAKE',
'HA-TAO-DI' => 'MOPPING',
'THLA-NA-NAH' => 'MORE',
'BE-AL-DOH-CID-DA-HI' => 'MORTAR',
'NA-HOT-NAH' => 'MOTION',
'CHIDE-BE-TSE-TSEN' => 'MOTOR',
'KA-HA-TENI' => 'NATIVE',
'TAL-KAH-SILAGO' => 'NAVY',
'YE-NA-ZEHN' => 'NECESSARY',
'DO-YA-SHO-DA' => 'NEGATIVE',
'NA-NES-DIZI' => 'NET',
'DO-NEH-LINI' => 'NEUTRAL',
'DOH-A-TA-H-DAH' => 'NORMAL',
'NI-DAH-THAN-ZIE' => 'NOT',
'NE-DA-TAZI-THIN' => 'NOTICE',
'KUT' => 'NOW',
'BEH-BIH-KE-AS-CHINIGH' => 'NUMBER',
'BI-NE-YEI' => 'OBJECTIVE',
'HAL-ZID' => 'OBSERVE',
'DA-HO-DESH-ZHA' => 'OBSTACLE',
'YEEL-TSOD' => 'OCCUPY',
'TOH-NI-TKAL-LO' => 'OF',
'BIN-KIE-JINH-JIH-DEZ-JAY' => 'OFFENSIVE',
'TA-LAI-DI' => 'ONCE',
'TA-EI-TAY-A-YAH' => 'ONLY',
'YE-NAHL-NISH' => 'OPERATE',
'ASH-GA-ALIN' => 'OPPORTUNITY',
'NE-HE-TSAH-JIH-SHIN' => 'OPPOSITION',
'EH-DO-DAH-GOH' => 'OR',
'TCHIL-LHE-SOI' => 'ORANGE',
'BE-EH-HO-ZINI' => 'ORDER',
'LEI-AZ-JAH' => 'ORDNANCE',
'DAS-TEH-DO' => 'ORIGINATE',
'LA-E-CIH' => 'OTHER',
'CLO-DIH' => 'OUT',
'BE-KA-HAS-TSOZ' => 'OVERLAY',
'ATSANH' => 'PARENTHESIS',
'A-YO-AD-DO-NEH' => 'PARTICULAR',
'DA-SHA-JAH' => 'PARTY',
'NA-ELI-YA' => 'PAY',
'TAH-NI-DES-TANH' => 'PENALIZE',
'YAL' => 'PERCENT',
'DA-AHL-ZHIN' => 'PERIOD',
'DA-AL-ZHIN-THIN-MOASI' => 'PERIODIC',
'GOS-SHI-E' => 'PERMIT',
'DA-NE-LEI' => 'PERSONNEL',
'BEH-CHI-MA-HAD-NIL' => 'PHOTOGRAPH',
'BOX' => 'PILL',
'DOWN' => 'PINNED',
'TSIDI' => 'PLANE',
'DIL-DI-GHILI' => 'PLASMA',
'BE-SO-DE-DEZ-AHE' => 'POINT',
'TKOSH-JAH-DA-NA-ELT' => 'PONTOON',
'BILH-HAS-AHN' => 'POSITION',
'TA-HA-AH-TAY' => 'POSSIBLE',
'SAH-DEI' => 'POST',
'HASH-TAY-HO-DIT-NE' => 'PREPARE',
'KUT' => 'PRESENT',
'BIH-TSE-DIH' => 'PREVIOUS',
'ALTSEH-NAN-DAY-HI-GIH' => 'PRIMARY',
'HANE-PESODI' => 'PRIORITY',
'DA-TSI' => 'PROBABLE',
'NA-NISH-TSOH' => 'PROBLEM',
'NAY-NIH-JIH' => 'PROCEED',
'NAH-SAI' => 'PROGRESS',
'AH-CHANH' => 'PROTECT',
'YIS-NIL' => 'PROVIDE',
'DINL-CHI' => 'PURPLE',
'COH-NA-CHANH' => 'PYROTECHNIC',
'AH-JAH' => 'QUESTION',
'SHIL-LOH' => 'QUICK',
'ESAT-TSANH' => 'RADAR',
'DEZJAY' => 'RAID',
'A-DE-GEH-HI' => 'RAILHEAD',
'KONH-NA-AL-BANSI-BI-THIN' => 'RAILROAD',
'A-LAH-NA-O-GLALIH' => 'RALLYING',
'AN-ZAH' => 'RANGE',
'GAH-EH-YAHN' => 'RATE',
'NA-A-JAH' => 'RATION',
'CHUSH-KA' => 'RAVINE',
'IL-DAY' => 'REACH',
'KUT' => 'READY',
'BE-KA-DENH' => 'REAR',
'SHOZ-TEH' => 'RECEIPT',
'CHE-HO-TAI-TAHN' => 'RECOMMEND',
'HA-A-CIDI' => 'RECONNAISSANCE',
'TA-HA-NE-AL-YA' => 'RECONNOITER',
'GAH-AH-NAH-KLOLI' => 'RECORD',
'LI-CHI' => 'RED',
'TSA-ZHIN' => 'REEF',
'EH-NA-COH' => 'REEMBARK',
'NA-NA-COH' => 'REFIRE',
'NA-YEL-N' => 'REGULATE',
'NAL-DZIL' => 'REINFORCE',
'AGANH-TOL-JAY' => 'RELIEF',
'NAH-JIH-CO-NAL-YA' => 'RELIEVE',
'HA-DIT-ZAH' => 'REORGANIZE',
'NI-NA-DO-NIL' => 'REPLACEMENT',
'WHO-NEH' => 'REPORT',
'TKA-NAZ-NILI' => 'REPRESENTATIVE',
'JO-KAYED-GOH' => 'REQUEST',
'HESH-J-E' => 'RESERVE',
'BA-HO-CHINI' => 'RESTRICT',
'AH-HOS-TEEND' => 'RETIRE',
'JI-DIN-NES-CHANH' => 'RETREAT',
'NA-DZAH' => 'RETURN',
'WHO-NEH' => 'REVEAL',
'NA-SI-YIZ' => 'REVERT',
'BA-NAS-CLA' => 'REVETMENT',
'GAH-GHIL-KEID' => 'RIDGE',
'BE-AL-DO-HOSTEEN' => 'RIFLEMAN',
'TOH-YIL-KAL' => 'RIVER',
'BOMB' => 'ROBOT',
'LESZ-YIL-BESHI' => 'ROCKET',
'YEH-MAS' => 'ROLL',
'NAZ-PAS' => 'ROUND',
'GAH-BIH-TKEEN' => 'ROUTE',
'NIH-DZID-TEIH' => 'RUNNER',
'A-TKEL-YAH' => 'SABOTAGE',
'A-TKEL-EL-INI' => 'SABOTEUR',
'CHA-LE-GAI' => 'SAILOR',
'NA-HAS-GLAH' => 'SALVAGE',
'BIH-LA-SANA-CID-DA-HI' => 'SAT',
'BEH-EH-HO-ZINI' => 'SCHEDULE',
'HA-A-SID-AL-SIZI-GIH' => 'SCOUT',
'BESH-NA-NES-DIZI' => 'SCREEN',
'TKAL-KAH-DINEH-IH' => 'SEAMAN',
'BAH-HAS-TKIH' => 'SECRET',
'YOEHI' => 'SECTOR',
'YE-DZHE-AL-TSISI' => 'SECURE',
'YEEL-STOD' => 'SEIZE',
'BE-TAH-HAS-GLA' => 'SELECT',
'COLON' => 'SEMI',
'DZEH-CID-DA-HI' => 'SET',
'DI-BAH-NESH-GOHZ' => 'SHACKLE',
'BE-AL-DOH-BE-CA' => 'SHELL',
'TAH-BAHN' => 'SHORE',
'BOSH-KEESH' => 'SHORT',
'BOSH-KEESH' => 'SIDE',
'YE-EL-TSANH' => 'SIGHT',
'NA-EH-EH-GISH' => 'SIGNAL',
'ALAH-IH-NE-TIH' => 'SIMPLEX',
'TKIN-CID-DA-HI' => 'SIT',
'A-HO-TAY' => 'SITUATE',
'LIT' => 'SMOKE',
'OH-BEHI' => 'SNIPER',
'BE-TKAH' => 'SPACE',
'E-YIH-SIH' => 'SPECIAL',
'YO-ZONS' => 'SPEED',
'AH-NA-HO-NEIL' => 'SPORADIC',
'EEL-TSAY-I' => 'SPOTTER',
'KLESH-SO-DILZIN' => 'SPRAY',
'NAH-GHIZI' => 'SQUADRON',
'NE-OL' => 'STORM',
'NA-WO-GHI-GOID' => 'STRAFF',
'CHY-NE-DE-DAHE' => 'STRAGGLER',
'NA-HA-TAH' => 'STRATEGY',
'TOH-NI-LIH' => 'STREAM',
'DZHEL' => 'STRENGTH',
'DESZ-TSOOD' => 'STRETCH',
'NAY-DAL-GHAL' => 'STRIKE',
'HA-TIH-JAH' => 'STRIP',
'NIL-TA' => 'STUBBORN',
'NA-NISH-YAZZIE' => 'SUBJECT',
'TKAL-CLA-YI-YAH' => 'SUBMERGE',
'A-NIH-LEH' => 'SUBMIT',
'AL-KHI-NAL-DZL' => 'SUBORDINATE',
'YAH-TAY-GO-E-ELAH' => 'SUCCEED',
'UT-ZAH' => 'SUCCESS',
'UT-ZAH-HA-DEZ-BIN' => 'SUCCESSFUL',
'UT-ZAH-SID' => 'SUCCESSIVE',
'YIS-CLEH' => 'SUCH',
'TO-HO-NE' => 'SUFFER',
'SHIN-GO-BAH' => 'SUMMARY',
'TKA-GO-NE-NAN-DEY-HE' => 'SUPPLEMENTARY',
'NAL-YEH-HI' => 'SUPPLY',
'SHIP' => 'SUPPLY',
'BA-AH-HOT-GLI' => 'SUPPORT',
'NE-NA-CHA' => 'SURRENDER',
'NAZ-PAS' => 'SURROUND',
'YIS-DA-YA' => 'SURVIVE',
'DI-BA-TSA-AS-ZHI-BI-TSIN' => 'SYSTEM',
'E-CHIHN' => 'TACTICAL',
'GAH-TAHN' => 'TAKE',
'CHAY-DA-GAHI' => 'TANK',
'DESTROYER' => 'TANK',
'WOL-DONI' => 'TARGET',
'TAZI-NA-EH-DIL-KID' => 'TASK',
'DEH-NA-AS-TSO-SI' => 'TEAM',
'ALI-KHI-HO-NE-OHA' => 'TERRACE',
'TASHI-NA-HAL-THIN' => 'TERRAIN',
'KA-YAH' => 'TERRITORY',
'TAZI-CHA' => 'THAT',
'CHA-GEE' => 'THE',
'BIH' => 'THEIR',
'TA-ZI-KWA-I-BE-KA-DI' => 'THEREAFTER',
'CHA-GI-O-EH' => 'THESE',
'CHA-GEE' => 'THEY',
'DI' => 'THIS',
'TA-BILH' => 'TOGETHER',
'LO-BE-CA' => 'TORPEDO',
'TA-AL-SO' => 'TOTAL',
'BEH-NA-AL-KAH-HI' => 'TRACER',
'DIAGRAM' => 'TRAFFIC',
'COH-NAI-ALI-BAHN-SI' => 'TRAIN',
'A-HAH-DA-A-CHA' => 'TRANSPORTATION',
'E-GADE' => 'TRENCH',
'TKA-IH' => 'TRIPLE',
'NAL-DEH-HI' => 'TROOP',
'CHIDO-TSO' => 'TRUCK',
'ALTH-AH-A-TEH' => 'TYPE',
'BI-YAH' => 'UNDER',
'DO-BAY-HOSEN-E' => 'UNIDENTIFIED',
'DA-AZ-JAH' => 'UNIT',
'NO-DA-EH-NESH-GOHZ' => 'UNSHACKLE',
'UH-QUO-HO' => 'UNTIL',
'NA-HOS-AH-GIH' => 'VICINITY',
'CHAH-HO-OH-LHAN-IH' => 'VILLAGE',
'NAY-ES-TEE' => 'VISIBILITY',
'TA-EH-YE-SY' => 'VITAL',
'BILH-HE-NEH' => 'WARNING',
'NE-TEH' => 'WAS',
'TKOH' => 'WATER',
'YILH-KOLH' => 'WAVE',
'BEH-DAH-A-HI-JIH-GANI' => 'WEAPON',
'TO-HA-HA-DLAY' => 'WELL',
'GLOE-EH-NA-AH-WO-HAI' => 'WHEN',
'GLOE-IH-QUI-AH' => 'WHERE',
'GLOE-IH-A-HSI-TLON' => 'WHICH',
'GLOE-IH-DOT-SAHI' => 'WILL',
'BESH-TSOSIE' => 'WIRE',
'BILH' => 'WITH',
'BILH-BIGIH' => 'WITHIN',
'TA-GAID' => 'WITHOUT',
'CHIZ' => 'WOOD',
'CAH-DA-KHI' => 'WOUND',
'A-DEL-TAHL' => 'YARD',
'BIH-NA-HAS-DZOH' => 'ZONE');
sub encrypt
{
my $str = shift;
$str =~ tr/[a-z]/[A-Z]/;
$str =~ s/[^a-zA-Z\d\s]//g;
my @words = split /\s+/, $str;
foreach my $i (0..$#words)
{
if(exists($CDICT{$words[$i]}))
{
$words[$i] = $CDICT{$words[$i]};
next;
}
my @letters = split //, $words[$i];
foreach my $j (0..$#letters)
{
next if($letters[$j] =~ /\d/);
if(exists $CALPHA{$letters[$j]})
{
$letters[$j] =
$CALPHA{$letters[$j]}->[rand @{$CALPHA{$letters[$j]}}];
}
else
{
die "Letter not found in encryption dictionary: ",
$letters[$j], "\n";
}
}
$words[$i] = join ' ', @letters;
}
return join ' ', @words;
}
sub decrypt
{
my $str = shift;
my @words = split /\s\s/, $str;
foreach my $i(0.. $#words)
{
next if $words[$i] =~ /\d/;
if($words[$i] =~ /\s/)
{
my @letters = split /\s/, $words[$i];
$words[$i] = '';
foreach my $j (0..$#letters)
{
if($letters[$j] =~ /\d/)
{
$words[$i] .= $letters[$j];
}
elsif(exists $DALPHA{$letters[$j]})
{
$words[$i] .= $DALPHA{$letters[$j]};
}
else
{
die "Letter not found in decryption dictionary: ",
$letters[$j], "\n";
}
}
next;
}
if(exists $DDICT{$words[$i]})
{
$words[$i] = $DDICT{$words[$i]};
}
elsif(exists $DALPHA{$words[$i]})
{
$words[$i] = $DALPHA{$words[$i]};
}
else
{
die "Word not found in decryption dictionary: ", $words[$i], "
+\n";
}
}
return join ' ', @words;
}
return 'DIBEH AH-NAH TSIN-TLITI BI-SO-DIH DZEH DAH-NES-TSA CHUO TKIN
+BE AH-JAH AH-JAD YEH-HES KLESH';
=head1 NAME
Crypt::Navajo - Navajo Code Talkers encryptionl
=head1 SYNOPSIS
use Crypt::Navajo qw/encrypt decrypt/;
my $string = "PERL HARBOR IS UNDER ATTACK";
my $ciphertext = encrypt($string);
my $plaintext = decrypt($ciphertext);
=head1 DESCRIPTION
This module implements the code the Navajo Code Talkers used during WW
+II in the
Pacific theater. The code was devised by Navajo Marines and proved un
+breakable
to the Japanese. The cipher as it appears in the Perl code is taken f
+rom the
Navajo Code Talker's Dictionary, revised as of 15 June 1945 (available
+ at
http://www.history.navy.mil/faqs/faq61-4.htm).
This module is not intended for use in modern cryptography--anybody wi
+th the
algorithm can decrypt anything encrypted with it.
=head1 AUTHOR
Perl code written by Michael J. Iatauro, miatauro@zahadum.com
Navajo Code suggested by Philip Johnston, developed by the first 29 N
+avajo
Marine recruits.
=cut
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.