-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathindex.html
More file actions
1493 lines (1357 loc) · 91 KB
/
index.html
File metadata and controls
1493 lines (1357 loc) · 91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!-- saved from url=(0014)about:internet -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- Dima-note: the saved from url line is from http://www.mkyong.com/web-development/jquery-hit-internet-explorer-activex-controls-warning-solution/ -->
<title>Solve Crypto with Force!</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel="shortcut icon" href="media/emblem.ico">
<meta name="referrer" content="no-referrer" />
<link rel="stylesheet" type="text/css" href="css/base.css">
<link rel="stylesheet" type="text/css" href="css/normal.css">
<link rel="stylesheet" type="text/css" href="css/jquery.orgchart.css">
<!--<link rel="stylesheet" href="js/jquery-ui.css">-->
<!--<script language="JavaScript" src="js/jquery-1.11.1.min.js"></script>-->
<script language="JavaScript" src="js/jquery-2.2.4.min.js"></script>
<!--<script src="js/jquery-ui.min.js"></script>
<link href="css/jquery.highlighttextarea.css" rel="stylesheet">
<script src="js/jquery.highlighttextarea.js"></script>--><!-- use .min.js -->
<script language="JavaScript" src="UserSettings.js"></script>
<script language="JavaScript" src="PASSWORDS.js"></script>
<script language="JavaScript" src="js/notUglifiable.js"></script>
<!--<UGLIFYSANITIZEME>-->
<script language="JavaScript" src="js/Global.js"></script>
<script language="JavaScript" src="js/settings.js"></script>
<script language="JavaScript" src="js/fileupdownload.js"></script>
<script language="JavaScript" src="js/timer.js"></script>
<script language="JavaScript" src="js/Analyze.js"></script>
<script language="JavaScript" src="js/Teacher.js"></script>
<script language="JavaScript" src="js/Guess.js"></script>
<script language="JavaScript" src="js/Student.js"></script>
<script language="JavaScript" src="js/cipher/bytearray.js"></script>
<script language="JavaScript" src="js/cipher/affine.js"></script>
<script language="JavaScript" src="js/cipher/atbash.js"></script>
<script language="JavaScript" src="js/cipher/baconian.js"></script>
<script language="JavaScript" src="js/cipher/base58.js"></script>
<script language="JavaScript" src="js/cipher/base64.js"></script>
<script language="JavaScript" src="js/cipher/baseX.js"></script>
<script language="JavaScript" src="js/cipher/baudotmurray.js"></script>
<script language="JavaScript" src="js/cipher/bifid.js"></script>
<script language="JavaScript" src="js/cipher/caesar.js"></script>
<script language="JavaScript" src="js/cipher/code39.js"></script>
<script language="JavaScript" src="js/cipher/coltrans.js"></script>
<script language="JavaScript" src="js/cipher/digraph.js"></script>
<script language="JavaScript" src="js/cipher/ebcdic.js"></script>
<script language="JavaScript" src="js/cipher/hash.js"></script>
<script language="JavaScript" src="js/cipher/letternumbers.js"></script>
<script language="JavaScript" src="js/cipher/maze.js"></script>
<script language="JavaScript" src="js/cipher/morse.js"></script>
<script language="JavaScript" src="js/cipher/otp.js"></script>
<script language="JavaScript" src="js/cipher/playfair.js"></script>
<script language="JavaScript" src="js/cipher/railfence.js"></script>
<script language="JavaScript" src="js/cipher/rotate.js"></script>
<script language="JavaScript" src="js/cipher/skip.js"></script>
<script language="JavaScript" src="js/cipher/substitute.js"></script>
<script language="JavaScript" src="js/cipher/transposition.js"></script>
<script language="JavaScript" src="js/cipher/vigenere.js"></script>
<script language="JavaScript" src="js/cipher/romannumerals.js"></script>
<script language="JavaScript" src="js/cipher/weirdcrypto.js"></script>
<script language="JavaScript" src="js/cipher/xor.js"></script>
<script language="JavaScript" src="js/cipher/lsb.js"></script>
<script language="JavaScript" src="js/cipher/onlinelookup.js"></script>
<script language="JavaScript" src="js/cipher/webapp/webapp.js"></script>
<script language="JavaScript" src="js/cipher/webapp/viewstateparser.js"></script>
<script language="JavaScript" src="js/cipher/enigma/namespace.js"></script>
<script language="JavaScript" src="js/cipher/enigma/base.js"></script>
<script language="JavaScript" src="js/cipher/enigma/formatutil.js"></script>
<script language="JavaScript" src="js/cipher/enigma/dom.js"></script>
<script language="JavaScript" src="js/cipher/enigma/events.js"></script>
<script language="JavaScript" src="js/cipher/enigma/enigma.js"></script>
<script language="JavaScript" src="js/cipher/enigma/enigma-sim.js"></script>
<script language="JavaScript" src="js/cipher/enigma/mersene_twister.js"></script>
<script language="JavaScript" src="js/cipher/enigma/random.js"></script>
<script language="JavaScript" src="js/cipher/keymaker.js"></script>
<script language="JavaScript" src="js/cipher/friedman.js"></script>
<script language="JavaScript" src="js/cipher/statistics.js"></script>
<script language="JavaScript" src="js/cipher/util.js"></script>
<script language="JavaScript" src="js/jquery.orgchart.js"></script>
<script language="JavaScript" src="js/Grade.js"></script>
<script language="JavaScript" src="js/ForceFlow.js"></script>
<script language="JavaScript" src="js/manipulateString.js"></script>
<script language="JavaScript" src="js/Moar.js"></script>
<script language="JavaScript" src="js/binary.js"></script>
<script language="JavaScript" src="js/WorkSpace.js"></script>
<script language="JavaScript" src="js/MAIN.js"></script>
<script language="JavaScript" src="js/TestCases.js"></script>
<script language="JavaScript" src="js/TestCasesAll.js"></script>
<script language="JavaScript" src="js/Test.js"></script>
<script language="JavaScript" src="js/Under_development.js"></script>
<!--</UGLIFYSANITIZEME>-->
</head>
<body>
<script>Timer.startN('>RENDERHTML');</script>
<a class="an" name="top"> </a><a class="an" name="0"> </a>
<div id="orgChartContainer" style="margin-top:40px;"><div id="orgChart"></div></div>
<table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
<tr><Td valign=top>
<div class="r_header" id="top">Solve Crypto with Force!</div>
<form name="encoder" method=post action="#" onsubmit="return false;">
<div id="WORKSPACE_TOP" style="position:fixed;top:0px;left:0px;width:100%;background:white;border-width:2px;border-bottom:3px #01A0E4 solid;padding:3px 0 3px 7px;">
<input type="hidden" name="encdec" value="-1" />
<span style="background-color:white;border-radius:5px;font-size:14px;">
<!--<br>-->
<b>Remove</b>
<a href="#" onclick="return S_RemoveSpaces()">spaces, tabs</a>,
<a href="#" onclick="return S_RemoveCRLF()">newlines</a>.
<!--<br>-->
<!--<br>--><b>Other</b> <a href="#" onclick="return T_Reverse()">Reverse</a><span id="MANIPULATE_digitinput_topscreen"></span>.
<b>Replace</b>
<select name="MANIPULATE_char_enumlist" id="MANIPULATE_char_enumlist"></select> with
<input type="text" value="" name="MANIPULATE_char_replace_with" id="MANIPULATE_char_replace_with" size="2" style="font-size:12px;"><input type="button" onclick="S_ReplaceCharFromInputFields(); return false;" value="►" style="font-size:12px;">
</span>
<select style="background-color:white;border-radius:5px;margin-left:15px;padding:3px;" id="hitBox" align=center onChange="Teacher.scrollToName('#'+this.value);Teacher.showArrow(this.value);" onClick="Teacher.scrollToName('#'+this.value);Teacher.showArrow(this.value);"></select>
<input type="button" onclick="Teacher.selectNextOption('#hitBox'); return false;" value="►" style="font-size:12px;">
<span style="margin-left:15px;padding:3px;" id="onlineLookupBox" align=center>.</span>
<div style="float:right;padding-right:10px;">
<a id="ENABLE_AUTO_DECODE" class="ENABLE_AUTO_DECODE">Decode on</a>
<a id="ENABLE_AUTO_BRUTEFORCE" class="ENABLE_AUTO_BRUTEFORCE">BruteForce on</a>
<select name="SENSITIVITY_AUTOGUESS" id="SENSITIVITY_AUTOGUESS" class="blueSelectDropdown" onchange="Global.setAutoGuessSensitivity(this);">
<option value="9001" selected>Off
<option value="5">Almost Certain
<option value="4">Educated Guess
<option value="3">Guess
<option value="2" selected>Wild Guess
<option value="1">Desperate Guess
</select>
<button id="openSettingsBtn" style="margin-left:40px;">Settings</button>
<input onclick="this.disabled=true;return Test.initTestMode();" value="Test Mode" type="button" style="margin-left:20px;">
</div>
<img src="media/loading.gif" width="20" height="20" style="position:fixed;top:5px;right:82px;" id="loadingspinner">
<span id="sci" name="StartCalculationsIndicator"></span>
<div id="hitValueBox" class="code"></div>
</div>
<div id="mySettings" class="modal">
<div class="modal-content">
<div class="modal-header">
<span class="closeSettings">×</span>
<h2>Settings</h2>
</div>
<table class="modal-body">
<tr><th>Global settings</th><th>Brute Force Settings</th><th>Enable ciphers</th></tr>
<tr><td id="allSettingsTBody"></td><td id="allSettingsCol2TBody"></td><td id="allGlobSettingsTBody"></td></tr>
</table>
<br>
<!--<table class="modal-body">
<tr><th>Passwords</th><th>Keywords</th></tr>
<tr><td id="allDictionaryKeysTBody">a</td><td id="allOutputSpecialWordsTBody">b</td></tr>
</table>-->
<div class="modal-footer">
<h3>github.com/DaWouw</h3>
</div>
</div>
</div>
<table cellpadding=0 cellspacing=0 border=0 width="100%" id="WORKSPACE"><tr><td valign=top width="99%"><div class="r_main">
<h2>Frequency Analysis</h2><a class="an" name="frequency"> </a>
<p class="explanation">One way to tell if you have a "transposition" style of cipher instead of
an encrypting method is to perform a letter frequency analysis on the
ciphertext. In English, you will have certain letters (E, T) show up more
than others (Q, Z). To use this tool, just copy your text into the top box
and a chart showing letter frequency will be generated in the bottom. If
you want to see a demo, I can type in some <a href="#" onclick="FREQUENCY_insert_sample(0); $('a#ENABLE_AUTO_DECODE').click(); $('a#ENABLE_AUTO_BRUTEFORCE').click(); var a = document.getElementById('SENSITIVITY_AUTOGUESS'); a.value = '9001'; Global.setAutoGuessSensitivity(a); return false">sample text</a> for you.</p>
<p>Note: Approximate values for English text: Friedman IC is around 1.73 and kappa-plaintext is around 0.0665.</p>
<div class="outputbox"><span id='FREQUENCY_output' class='outputboxnoclear' style="font-family: inherit;width: 90%"></span></div>
<div class="outputbox"><span id='STATISTIC_output' class='outputboxnoclear'></span></div>
<div style="clear: both"></div>
<h2>Hex analysis</h2><a class="an" name="hex-analysis"> </a>
<p class="explanation">
Usefull for analyzing hex values?
</p>
<div class="outputbox"><span id='HEX_analysis_separate' class='outputbox'></span></div>
<mark class="me">Special chars</mark> <mark class="lo">numbers</mark> <mark class="sp">lowercase</mark> <mark class="fi">UPPERCASE</mark>
<div class="outputbox"><span id='HEX_analysis_color' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>ASCII heatmap</h2><a class="an" name="ascii-heatmap"> </a>
<input id="ASCII_heatmap_button" type="button" style="display:none" onclick="ASCII_HEATMAP_upd(1); return false;" value="Update ASCII heatmap">
<table cellspacing="0" border="1" class="T_ASCII code">
<tr>
<th>Dec</th><th>Hex</th><th>Val</th><th></th><th>Dec</th><th>Hex</th><th>Val</th><th></th><th>Dec</th><th>Hex</th><th>Val</th><th></th><th>Dec</th><th>Hex</th><th>Val</th>
</tr>
<tr>
<td colspan="12"></td>
</tr>
<tr>
<td class="T_0 T_dec">0</td><td class="T_0 T_hex">0</td><td class="T_0 T_val">NUL</td><td class="T_space"></td><td class="T_20 T_dec">32</td><td class="T_20 T_hex">20</td><td class="T_20 T_val"><small>SPACE</small></td><td class="T_space"></td><td class="T_40 T_dec">64</td><td class="T_40 T_hex">40</td><td class="T_40 T_val">@</td><td class="T_space"></td><td class="T_60 T_dec">96</td><td class="T_60 T_hex">60</td><td class="T_60 T_val">`</td><td class="T_space"></td><td class="T_80 T_dec">128-255</td><td class="T_80 T_hex">80-FF</td><td class="T_80 T_val">High</td>
</tr>
<tr>
<td class="T_1 T_dec">1</td><td class="T_1 T_hex">1</td><td class="T_1 T_val">SOH</td><td class="T_space"></td><td class="T_21 T_dec">33</td><td class="T_21 T_hex">21</td><td class="T_21 T_val">!</td><td class="T_space"></td><td class="T_41 T_dec">65</td><td class="T_41 T_hex">41</td><td class="T_41 T_val">A</td><td class="T_space"></td><td class="T_61 T_dec">97</td><td class="T_61 T_hex">61</td><td class="T_61 T_val">a</td>
</tr>
<tr>
<td class="T_2 T_dec">2</td><td class="T_2 T_hex">2</td><td class="T_2 T_val">STX</td><td class="T_space"></td><td class="T_22 T_dec">34</td><td class="T_22 T_hex">22</td><td class="T_22 T_val">"</td><td class="T_space"></td><td class="T_42 T_dec">66</td><td class="T_42 T_hex">42</td><td class="T_42 T_val">B</td><td class="T_space"></td><td class="T_62 T_dec">98</td><td class="T_62 T_hex">62</td><td class="T_62 T_val">b</td>
</tr>
<tr>
<td class="T_3 T_dec">3</td><td class="T_3 T_hex">3</td><td class="T_3 T_val">ETX</td><td class="T_space"></td><td class="T_23 T_dec">35</td><td class="T_23 T_hex">23</td><td class="T_23 T_val">#</td><td class="T_space"></td><td class="T_43 T_dec">67</td><td class="T_43 T_hex">43</td><td class="T_43 T_val">C</td><td class="T_space"></td><td class="T_63 T_dec">99</td><td class="T_63 T_hex">63</td><td class="T_63 T_val">c</td>
</tr>
<tr>
<td class="T_4 T_dec">4</td><td class="T_4 T_hex">4</td><td class="T_4 T_val">EOT</td><td class="T_space"></td><td class="T_24 T_dec">36</td><td class="T_24 T_hex">24</td><td class="T_24 T_val">$</td><td class="T_space"></td><td class="T_44 T_dec">68</td><td class="T_44 T_hex">44</td><td class="T_44 T_val">D</td><td class="T_space"></td><td class="T_64 T_dec">100</td><td class="T_64 T_hex">64</td><td class="T_64 T_val">d</td>
</tr>
<tr>
<td class="T_5 T_dec">5</td><td class="T_5 T_hex">5</td><td class="T_5 T_val">ENQ</td><td class="T_space"></td><td class="T_25 T_dec">37</td><td class="T_25 T_hex">25</td><td class="T_25 T_val">%</td><td class="T_space"></td><td class="T_45 T_dec">69</td><td class="T_45 T_hex">45</td><td class="T_45 T_val">E</td><td class="T_space"></td><td class="T_65 T_dec">101</td><td class="T_65 T_hex">65</td><td class="T_65 T_val">e</td>
</tr>
<tr>
<td class="T_6 T_dec">6</td><td class="T_6 T_hex">6</td><td class="T_6 T_val">ACK</td><td class="T_space"></td><td class="T_26 T_dec">38</td><td class="T_26 T_hex">26</td><td class="T_26 T_val">&</td><td class="T_space"></td><td class="T_46 T_dec">70</td><td class="T_46 T_hex">46</td><td class="T_46 T_val">F</td><td class="T_space"></td><td class="T_66 T_dec">102</td><td class="T_66 T_hex">66</td><td class="T_66 T_val">f</td>
</tr>
<tr>
<td class="T_7 T_dec">7</td><td class="T_7 T_hex">7</td><td class="T_7 T_val">BEL</td><td class="T_space"></td><td class="T_27 T_dec">39</td><td class="T_27 T_hex">27</td><td class="T_27 T_val">'</td><td class="T_space"></td><td class="T_47 T_dec">71</td><td class="T_47 T_hex">47</td><td class="T_47 T_val">G</td><td class="T_space"></td><td class="T_67 T_dec">103</td><td class="T_67 T_hex">67</td><td class="T_67 T_val">g</td>
</tr>
<tr>
<td class="T_8 T_dec">8</td><td class="T_8 T_hex">8</td><td class="T_8 T_val">BS</td><td class="T_space"></td><td class="T_28 T_dec">40</td><td class="T_28 T_hex">28</td><td class="T_28 T_val">(</td><td class="T_space"></td><td class="T_48 T_dec">72</td><td class="T_48 T_hex">48</td><td class="T_48 T_val">H</td><td class="T_space"></td><td class="T_68 T_dec">104</td><td class="T_68 T_hex">68</td><td class="T_68 T_val">h</td>
</tr>
<tr>
<td class="T_9 T_dec">9</td><td class="T_9 T_hex">9</td><td class="T_9 T_val">TAB</td><td class="T_space"></td><td class="T_29 T_dec">41</td><td class="T_29 T_hex">29</td><td class="T_29 T_val">)</td><td class="T_space"></td><td class="T_49 T_dec">73</td><td class="T_49 T_hex">49</td><td class="T_49 T_val">I</td><td class="T_space"></td><td class="T_69 T_dec">105</td><td class="T_69 T_hex">69</td><td class="T_69 T_val">i</td>
</tr>
<tr>
<td class="T_A T_dec">10</td><td class="T_A T_hex">A</td><td class="T_A T_val">LF</td><td class="T_space"></td><td class="T_2A T_dec">42</td><td class="T_2A T_hex">2A</td><td class="T_2A T_val">*</td><td class="T_space"></td><td class="T_4A T_dec">74</td><td class="T_4A T_hex">4A</td><td class="T_4A T_val">J</td><td class="T_space"></td><td class="T_6A T_dec">106</td><td class="T_6A T_hex">6A</td><td class="T_6A T_val">j</td>
</tr>
<tr>
<td class="T_B T_dec">11</td><td class="T_B T_hex">B</td><td class="T_B T_val">VT</td><td class="T_space"></td><td class="T_2B T_dec">43</td><td class="T_2B T_hex">2B</td><td class="T_2B T_val">+</td><td class="T_space"></td><td class="T_4B T_dec">75</td><td class="T_4B T_hex">4B</td><td class="T_4B T_val">K</td><td class="T_space"></td><td class="T_6B T_dec">107</td><td class="T_6B T_hex">6B</td><td class="T_6B T_val">k</td>
</tr>
<tr>
<td class="T_C T_dec">12</td><td class="T_C T_hex">C</td><td class="T_C T_val">FF</td><td class="T_space"></td><td class="T_2C T_dec">44</td><td class="T_2C T_hex">2C</td><td class="T_2C T_val">,</td><td class="T_space"></td><td class="T_4C T_dec">76</td><td class="T_4C T_hex">4C</td><td class="T_4C T_val">L</td><td class="T_space"></td><td class="T_6C T_dec">108</td><td class="T_6C T_hex">6C</td><td class="T_6C T_val">l</td>
</tr>
<tr>
<td class="T_D T_dec">13</td><td class="T_D T_hex">D</td><td class="T_D T_val">CR</td><td class="T_space"></td><td class="T_2D T_dec">45</td><td class="T_2D T_hex">2D</td><td class="T_2D T_val">-</td><td class="T_space"></td><td class="T_4D T_dec">77</td><td class="T_4D T_hex">4D</td><td class="T_4D T_val">M</td><td class="T_space"></td><td class="T_6D T_dec">109</td><td class="T_6D T_hex">6D</td><td class="T_6D T_val">m</td>
</tr>
<tr>
<td class="T_E T_dec">14</td><td class="T_E T_hex">E</td><td class="T_E T_val">SO</td><td class="T_space"></td><td class="T_2E T_dec">46</td><td class="T_2E T_hex">2E</td><td class="T_2E T_val">.</td><td class="T_space"></td><td class="T_4E T_dec">78</td><td class="T_4E T_hex">4E</td><td class="T_4E T_val">N</td><td class="T_space"></td><td class="T_6E T_dec">110</td><td class="T_6E T_hex">6E</td><td class="T_6E T_val">n</td>
</tr>
<tr>
<td class="T_F T_dec">15</td><td class="T_F T_hex">F</td><td class="T_F T_val">SI</td><td class="T_space"></td><td class="T_2F T_dec">47</td><td class="T_2F T_hex">2F</td><td class="T_2F T_val">/</td><td class="T_space"></td><td class="T_4F T_dec">79</td><td class="T_4F T_hex">4F</td><td class="T_4F T_val">O</td><td class="T_space"></td><td class="T_6F T_dec">111</td><td class="T_6F T_hex">6F</td><td class="T_6F T_val">o</td>
</tr>
<tr>
<td colspan="12"></td>
</tr>
<tr>
<td class="T_10 T_dec">16</td><td class="T_10 T_hex">10</td><td class="T_10 T_val">DLE</td><td class="T_space"></td><td class="T_30 T_dec">48</td><td class="T_30 T_hex">30</td><td class="T_30 T_val">0</td><td class="T_space"></td><td class="T_50 T_dec">80</td><td class="T_50 T_hex">50</td><td class="T_50 T_val">P</td><td class="T_space"></td><td class="T_70 T_dec">112</td><td class="T_70 T_hex">70</td><td class="T_70 T_val">p</td>
</tr>
<tr>
<td class="T_11 T_dec">17</td><td class="T_11 T_hex">11</td><td class="T_11 T_val">DC1</td><td class="T_space"></td><td class="T_31 T_dec">49</td><td class="T_31 T_hex">31</td><td class="T_31 T_val">1</td><td class="T_space"></td><td class="T_51 T_dec">81</td><td class="T_51 T_hex">51</td><td class="T_51 T_val">Q</td><td class="T_space"></td><td class="T_71 T_dec">113</td><td class="T_71 T_hex">71</td><td class="T_71 T_val">q</td>
</tr>
<tr>
<td class="T_12 T_dec">18</td><td class="T_12 T_hex">12</td><td class="T_12 T_val">DC2</td><td class="T_space"></td><td class="T_32 T_dec">50</td><td class="T_32 T_hex">32</td><td class="T_32 T_val">2</td><td class="T_space"></td><td class="T_52 T_dec">82</td><td class="T_52 T_hex">52</td><td class="T_52 T_val">R</td><td class="T_space"></td><td class="T_72 T_dec">114</td><td class="T_72 T_hex">72</td><td class="T_72 T_val">r</td>
</tr>
<tr>
<td class="T_13 T_dec">19</td><td class="T_13 T_hex">13</td><td class="T_13 T_val">DC3</td><td class="T_space"></td><td class="T_33 T_dec">51</td><td class="T_33 T_hex">33</td><td class="T_33 T_val">3</td><td class="T_space"></td><td class="T_53 T_dec">83</td><td class="T_53 T_hex">53</td><td class="T_53 T_val">S</td><td class="T_space"></td><td class="T_73 T_dec">115</td><td class="T_73 T_hex">73</td><td class="T_73 T_val">s</td>
</tr>
<tr>
<td class="T_14 T_dec">20</td><td class="T_14 T_hex">14</td><td class="T_14 T_val">DC4</td><td class="T_space"></td><td class="T_34 T_dec">52</td><td class="T_34 T_hex">34</td><td class="T_34 T_val">4</td><td class="T_space"></td><td class="T_54 T_dec">84</td><td class="T_54 T_hex">54</td><td class="T_54 T_val">T</td><td class="T_space"></td><td class="T_74 T_dec">116</td><td class="T_74 T_hex">74</td><td class="T_74 T_val">t</td>
</tr>
<tr>
<td class="T_15 T_dec">21</td><td class="T_15 T_hex">15</td><td class="T_15 T_val">NAK</td><td class="T_space"></td><td class="T_35 T_dec">53</td><td class="T_35 T_hex">35</td><td class="T_35 T_val">5</td><td class="T_space"></td><td class="T_55 T_dec">85</td><td class="T_55 T_hex">55</td><td class="T_55 T_val">U</td><td class="T_space"></td><td class="T_75 T_dec">117</td><td class="T_75 T_hex">75</td><td class="T_75 T_val">u</td>
</tr>
<tr>
<td class="T_16 T_dec">22</td><td class="T_16 T_hex">16</td><td class="T_16 T_val">SYN</td><td class="T_space"></td><td class="T_36 T_dec">54</td><td class="T_36 T_hex">36</td><td class="T_36 T_val">6</td><td class="T_space"></td><td class="T_56 T_dec">86</td><td class="T_56 T_hex">56</td><td class="T_56 T_val">V</td><td class="T_space"></td><td class="T_76 T_dec">118</td><td class="T_76 T_hex">76</td><td class="T_76 T_val">v</td>
</tr>
<tr>
<td class="T_17 T_dec">23</td><td class="T_17 T_hex">17</td><td class="T_17 T_val">ETB</td><td class="T_space"></td><td class="T_37 T_dec">55</td><td class="T_37 T_hex">37</td><td class="T_37 T_val">7</td><td class="T_space"></td><td class="T_57 T_dec">87</td><td class="T_57 T_hex">57</td><td class="T_57 T_val">W</td><td class="T_space"></td><td class="T_77 T_dec">119</td><td class="T_77 T_hex">77</td><td class="T_77 T_val">w</td>
</tr>
<tr>
<td class="T_18 T_dec">24</td><td class="T_18 T_hex">18</td><td class="T_18 T_val">CAN</td><td class="T_space"></td><td class="T_38 T_dec">56</td><td class="T_38 T_hex">38</td><td class="T_38 T_val">8</td><td class="T_space"></td><td class="T_58 T_dec">88</td><td class="T_58 T_hex">58</td><td class="T_58 T_val">X</td><td class="T_space"></td><td class="T_78 T_dec">120</td><td class="T_78 T_hex">78</td><td class="T_78 T_val">x</td>
</tr>
<tr>
<td class="T_19 T_dec">25</td><td class="T_19 T_hex">19</td><td class="T_19 T_val">EM</td><td class="T_space"></td><td class="T_39 T_dec">57</td><td class="T_39 T_hex">39</td><td class="T_39 T_val">9</td><td class="T_space"></td><td class="T_59 T_dec">89</td><td class="T_59 T_hex">59</td><td class="T_59 T_val">Y</td><td class="T_space"></td><td class="T_79 T_dec">121</td><td class="T_79 T_hex">79</td><td class="T_79 T_val">y</td>
</tr>
<tr>
<td class="T_1A T_dec">26</td><td class="T_1A T_hex">1A</td><td class="T_1A T_val">SUB</td><td class="T_space"></td><td class="T_3A T_dec">58</td><td class="T_3A T_hex">3A</td><td class="T_3A T_val">:</td><td class="T_space"></td><td class="T_5A T_dec">90</td><td class="T_5A T_hex">5A</td><td class="T_5A T_val">Z</td><td class="T_space"></td><td class="T_7A T_dec">122</td><td class="T_7A T_hex">7A</td><td class="T_7A T_val">z</td>
</tr>
<tr>
<td class="T_1B T_dec">27</td><td class="T_1B T_hex">1B</td><td class="T_1B T_val">ESC</td><td class="T_space"></td><td class="T_3B T_dec">59</td><td class="T_3B T_hex">3B</td><td class="T_3B T_val">;</td><td class="T_space"></td><td class="T_5B T_dec">91</td><td class="T_5B T_hex">5B</td><td class="T_5B T_val">[</td><td class="T_space"></td><td class="T_7B T_dec">123</td><td class="T_7B T_hex">7B</td><td class="T_7B T_val">{</td>
</tr>
<tr>
<td class="T_1C T_dec">28</td><td class="T_1C T_hex">1C</td><td class="T_1C T_val">FS</td><td class="T_space"></td><td class="T_3C T_dec">60</td><td class="T_3C T_hex">3C</td><td class="T_3C T_val"><</td><td class="T_space"></td><td class="T_5C T_dec">92</td><td class="T_5C T_hex">5C</td><td class="T_5C T_val">\</td><td class="T_space"></td><td class="T_7C T_dec">124</td><td class="T_7C T_hex">7C</td><td class="T_7C T_val">|</td>
</tr>
<tr>
<td class="T_1D T_dec">29</td><td class="T_1D T_hex">1D</td><td class="T_1D T_val">GS</td><td class="T_space"></td><td class="T_3D T_dec">61</td><td class="T_3D T_hex">3D</td><td class="T_3D T_val">=</td><td class="T_space"></td><td class="T_5D T_dec">93</td><td class="T_5D T_hex">5D</td><td class="T_5D T_val">]</td><td class="T_space"></td><td class="T_7D T_dec">125</td><td class="T_7D T_hex">7D</td><td class="T_7D T_val">}</td>
</tr>
<tr>
<td class="T_1E T_dec">30</td><td class="T_1E T_hex">1E</td><td class="T_1E T_val">RS</td><td class="T_space"></td><td class="T_3E T_dec">62</td><td class="T_3E T_hex">3E</td><td class="T_3E T_val">></td><td class="T_space"></td><td class="T_5E T_dec">94</td><td class="T_5E T_hex">5E</td><td class="T_5E T_val">^</td><td class="T_space"></td><td class="T_7E T_dec">126</td><td class="T_7E T_hex">7E</td><td class="T_7E T_val">~</td>
</tr>
<tr>
<td class="T_1F T_dec">31</td><td class="T_1F T_hex">1F</td><td class="T_1F T_val">US</td><td class="T_space"></td><td class="T_3F T_dec">63</td><td class="T_3F T_hex">3F</td><td class="T_3F T_val">?</td><td class="T_space"></td><td class="T_5F T_dec">95</td><td class="T_5F T_hex">5F</td><td class="T_5F T_val">_</td><td class="T_space"></td><td class="T_7F T_dec">127</td><td class="T_7F T_hex">7F</td><td class="T_7F T_val">DEL</td>
</tr>
<tr>
<td colspan="12"></td>
</tr>
</table>
<h2>Manipulation</h2><a class="an" name="manipulate"> </a>
<p class="explanation">Need to change something from lowercase to uppercase? Count the letters,
numbers, and punctuation? Remove spaces or add spaces at every X
characters? This can help. Just type some text into the box and click on
the links to change things around.</p>
<p class="explanation">CyberChef: <a href="https://gchq.github.io/CyberChef/">https://gchq.github.io/CyberChef/</a></p>
<p><b>Convert:</b>
<a href="#" onclick="return C_Upper()">UPPERCASE</a>,
<a href="#" onclick="return C_Lower()">lowercase</a>,
<a href="#" onclick="return C_FirstLetter()">First Letter</a>,
<a href="#" onclick="return C_Natural()">Natural case</a>
<br>
<b>Spacing:</b>
<a href="#" onclick="return S_RemoveSpaces()">Remove spaces and tabs</a>,
<a href="#" onclick="return S_RemoveCRLF()">Remove newlines</a>
<br>
<!--<b>Grouping:</b> <a href="#" onclick="return G_Group(0, 0)">Make groups</a> of <select name=STATISTIC_group_size> .....</select> groups -->
<br><b>Other Things:</b> <a href="#" onclick="return T_Reverse()">Reverse</a><br>
<br>
<b>Grouping:</b> <a href="#" onclick="return G_Group(0, 0)">Make groups</a> of
<select name="STATISTIC_group_size">
<option value="1">1
<option value="2">2
<option value="3" selected>3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
<option value="11">11
<option value="12">12
<option value="13">13
<option value="14">14
<option value="15">15
<option value="16">16
<option value="17">17
<option value="18">18
<option value="19">19
<option value="20">20
</select>, break after
<select name="STATISTIC_group_count">
<option value="1000" selected>No
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
<option value="15">15
<option value="20">20
<option value="25">25
<option value="30">30
<option value="40">40
<option value="50">50
</select> groups<br>
<i id="ni"></i><br>
<b>Binary-type input (bin,hex,base64) functions:</b>
</p>
<div id="MANIPULATE_digitinput"></div>
<h2>STRINGS</h2><a class="an" name="strings"> </a>
The current (unmodified) input is:
<div class="outputbox"><span id='MANIPULATE_output' class="outputbox">
<input id="STRINGS_button" type="button" style="" onclick="RunStringsFunctionAndScroll(); return false;" value="RunStrings">
</span></div>
<div class="outputbox"><span id='MANIPULATE_output_nospacesnewl' class="outputbox"></span></div>
<div class="outputbox"><span id='MANIPULATE_output_replaceaccents' class="outputbox"></span></div>
Image visual:
<div class="outputbox"><span id='MANIPULATE_output_image' class="outputbox"></span></div>
Remove all non-hex chars:
<div class="outputbox"><span id='MANIPULATE_output_onlyhex' class="outputbox"></span></div>
Remove all non-hex chars and to string:
<div class="outputbox"><span id='MANIPULATE_output_onlyhex_string' class="outputbox"></span></div>
<input type="button" name="HashCurrentValue" value="Hash current value" onclick="Hash.calcAll();return false;">
<div class="outputbox"><span id='MANIPULATE_hash' class="outputbox"></span></div>
<div style="clear: both"></div>
<h2>Binary</h2><a class="an" name="binary"> </a>
<p class="explanation">text</p>
<div class="outputbox"><span id='hex_output_binary' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Hex</h2><a class="an" name="hex"> </a>
<p class="explanation">text</p>
<div class="outputbox"><span id='binary_output_hex' class='outputbox'></span></div>
<div class="outputbox"><span id='hex_output' class='outputbox'></span></div>
<div class="outputbox"><span id='2bytehexbase100_output' class='outputbox'></span></div>
Hex binary-inverse, binary-reverse and binary-inverse-reverse:
<div class="outputbox"><span id='HEXBIN_INV_REV_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Octal</h2><a class="an" name="octal"> </a>
<p class="explanation">Three representations.
<a href="http://textmechanic.com/ASCII-Hex-Unicode-Base64-Converter.html" target="_blank" class="extern">1</a>
<a href="https://paulschou.com/tools/xlate/" target="_blank" class="extern">2</a>
<a href="https://cryptii.com/text/octal" target="_blank" class="extern">3</a></p>
<div class="outputbox"><span id='octal1_output' class='outputbox'></span></div>
<div class="outputbox"><span id='octal1_output_hex' class='outputbox'></span></div>
<div class="outputbox"><span id='octal2_output' class='outputbox'></span></div>
<div class="outputbox"><span id='octal2_output_hex' class='outputbox'></span></div>
<div class="outputbox"><span id='octal3_output' class='outputbox'></span></div>
<div class="outputbox"><span id='octal3_output_hex' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Decimal</h2><a class="an" name="decimal"> </a>
<p class="explanation">text</p>
<div class="outputbox"><span id='decimal_output' class='outputbox'></span></div>
<div class="outputbox"><span id='decimal_output_hex' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>RSA Decimal</h2><a class="an" name="decimalRSA"> </a>
<p class="explanation">After decrypting an RSA message, a large int is obtained. This int can be converted back to a string.</p>
<div class="outputbox"><span id='decimalRSA_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Base32</h2><a class="an" name="base32"> </a>
<p class="explanation">text</p>
<div class="outputbox"><span id='base32_output' class='outputbox'></span></div>
<div class="outputbox"><span id='base32_output_hex' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Base36</h2><a class="an" name="base36"> </a>
<p class="explanation">Base36 is extremely annoying to program in JavaScript where integers are available until 53 bits.</p>
<p class="explanation">Python one liner:<br>
a = 'AIDQJB34I3OA5B0BVLPE3OGV6XX23TTIGE6I451CC6V0VPWVWWGL1123EL2K56OS6R3W123WF2B0P90XH6N'<br>
print ("0"+hex(int(a,36))[2:-1]).decode('hex')</p>
<div class="outputbox"><span id='base36_output' class='outputbox'></span></div>
<div class="outputbox"><span id='base36_output_hex' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Base58</h2><a class="an" name="base58"> </a>
<p class="explanation">Base58 is extremely annoying to program in JavaScript where integers are available until 53 bits.</p>
<div class="outputbox"><span id='base58_output' class='outputbox'></span></div>
<div class="outputbox"><span id='base58_output_hex' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Base64</h2><a class="an" name="base64"> </a>
<p class="explanation">Base64, also known as MIME encoding, translates binary into safe text.
It is used to send attachments in email and to change small bits of unsafe
high-character data into stuff that is a lot nicer for text-based system. (Also <a href="https://jwt.io/" target="_blank" class="extern">JWT</a>)</p>
<div class="outputbox"><span id='BASE64_output' class='outputbox'></span></div>
<div class="outputbox"><span id='BASE64_hex_output' class='outputbox'></span></div>
<div class="outputbox"><span id='BASE64_JWT_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Ascii85 | Base85</h2><a class="an" name="ascii85"> </a>
<p class="explanation">text</p>
<div class="outputbox"><span id='ASCII85_output' class='outputbox'></span></div>
<div class="outputbox"><span id='ASCII85_hex_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Ascii</h2><a class="an" name="ascii"> </a>
<p class="explanation">text</p>
<div class="outputbox"><span id='ASCII_bin7bit' class='outputbox'></span></div>
<div class="outputbox"><span id='ASCII_bin8bit' class='outputbox'></span></div>
<div class="outputbox"><span id='ASCII_baudotmurray' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Bin/Hex shift</h2><a class="an" name="shift"> </a>
<p class="explanation">Binary or hex shift</p>
<div class="outputbox"><span id='SHIFT_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Switch</h2><a class="an" name="switch"> </a>
<p class="explanation">Character switch 0x1424 -> 0x4142 or BADC -> ABCD</p>
<div class="outputbox"><span id='SWITCH_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Roman numerals</h2><a class="an" name="roman"> </a>
<p class="explanation">Letter a -> LXXVI CI CXVI CXVI CI CXIV XXXII XCVII</p>
<div class="outputbox"><span id='ROMAN_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Affine Cipher (Multiply)</h2><a class="an" name="affine"> </a>
<p class="explanation">The Affine cipher is a monoalphabetic substitution cipher and it can be
the exact same as a standard <a href="#caesar">Caesarian shift</a> when
"a" is 1. Mathematically, it is represented as <tt>e(x) = (ax + b) mod
m</tt>. Decryption is a slightly different formula, <tt>d(x) =
a<sup>-1</sup>(x - b) mod m</tt>.</p>
<p class="explanation">To encode something, you need to pick the "a" and it must be coprime with
the length of the alphabet. To make this easier, I have the (+) and (-)
buttons to change the A to the next higher or lower coprime number.</p>
<p>a: <input name="a" type="text" size="3" value="3"> -
<input type="button" name="plusa" value="+" onclick="Affine.a_plus()">
<input type="button" name="minusa" value="-" onclick="Affine.a_minus()"></p>
<p>b: <input name="b" type="text" size="3" value="0"> -
<input type="button" name="plusb" value="+" onclick="Affine.b_plus()">
<input type="button" name="minusb" value="-" onclick="Affine.b_minus()"> {in ([0-25] | [0-94])}</p>
<div class="outputbox"><span id='AFFINE_output' class='outputbox'></span></div>
<div class="outputbox"><span id='AFFINE_output_bruteF' class='outputbox'></span></div>
<div class="outputbox"><span id='AFFINE_output_spec_bruteF' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Atbash cipher</h2><a class="an" name="atbash"> </a>
<p class="explanation">The Atbash cipher is a very common, simple cipher. It was for the Hebrew alphabet, but modified here to work with the English alphabet. Basically, when encoded, an "A" becomes a "Z", "B" turns into "Y", etc.</p>
<p class="explanation">The Atbash cipher can be implemented as an <a href="#affine">Affine cipher</a> by setting both "a" and "b" to 25.</p>
<div class="outputbox"><span id='ATBASH_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Baconian</h2><a class="an" name="baconian"> </a>
<p class="explanation">Francis Bacon created this method of hiding one message within another.
It is not a true cipher, but just a way to conceal your secret text within
plain sight. The way it originally worked is that the writer would use two
different typefaces. One would be the "A" typeface and the other would be
"B". Your message would be written with the two fonts intermingled, thus
hiding your message within a perfectly normal text.</p>
<p class="explanation">There are two versions. The first uses the same code for I and J, plus
the same code for U and V. The second uses distict codes for every
letter.</p>
<p class="explanation">For example, let's take the message "Test It" and encode it with the
distinct codes for each letter. You get a result like "BAABBAABAABAABABAABB
ABAAABAABB". The original message is 6 characters long so the encoded
version is 6 * 5 = 30 characters. If I were to find a 30-character message
and put in "B" letters as bold and italics, we will get "<b><i>T</i></b>hi<b><i>s</i></b> <b><i>i</i></b>s a <b><i>t</i></b>es<b><i>t</i></b> me<b><i>s</i></b>s<b><i>a</i></b>ge <b><i>w</i></b><b><i>i</i></b>t<b><i>h</i></b> bol<b><i>d</i></b> fo<b><i>r</i></b> "<b><i>B</i></b>".".
<p class="explanation">When decoding, it will use "0", "A", and "a" as an "A"; "1", "B", and "b"
are all equivalent as well. Other letters are ignored.</p>
<p><select name="rem_jv">
<option value="0">Distinct codes
<option value="1">I=J and U=V
</select>
Your message: (<a href="#" onclick="Baconian.swapBaconian(); return false">Swap A and B</a>)<br></p>
<div class="outputbox"><span id='BACONIAN_output' class='outputbox'></span></div>
<div class="outputbox"><span id='BACONIAN_output_reverse' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Bifid</h2><a class="an" name="bifid"> </a>
<p class="explanation">The Bifid cipher is considered a more secure cipher because it breaks the
message apart into two separate streams and then recombines them. This
spreads the information out to multiple letters, increasing security. It
uses a table with one letter of the alphabet omitted. Often the J is
removed and people just use an I instead. Below is an unkeyed grid.</p>
<table border=0 cellpadding=0 cellspacing=0 class="r_box" style="margin: 8px 8px 8px 0px;"><tr><td class="r_box" class="explanation"><tt>A B C D E<br>
F G H I K<br>
L M N O P<br>
Q R S T U<br>
V W X Y Z</tt>
</td></tr></table>
<p class="explanation">To encode a message, you would write your message, "ABCD", then you would
figure out the row and column for each letter and write them below the
letters, like the example shows. Then you read the numbers off; all of the
rows first and then all of the columns. Using this string of numbers, you
then look up the letters on the table again and get the encoded message.</p>
<table border=0 cellpadding=0 cellspacing=0 class="r_box" style="margin-top: 8px; margin-bottom: 8px;"><tr><td class="r_box"><tt>letter: A B C D<Br>
row: 1 1 1 1<br>
column: 1 2 3 4<br>
<br>
The numbers: 1 1 1 1 1 2 3 4<br>
Encoded: A A B
O<br></tt>
</td></tr></table>
<p class="explanation">All non-letters are ignored and not encoded. The one skipped letter will
be automatically translated if you type it in the box. Numbers, spaces, and
punctuation will remain in place and will not be encoded.</p>
<p class="explanation">You can see the <a href="#" onclick="Bifid.example_enc(); return false">example</a>
message, or the example from <a href="#" onclick="Bifid.wikipedia_enc(); return false">Wikipedia</a>.</p>
<p>Translate the letter <select name="BIFID_skip">
<option value="A">A
<option value="B">B
<option value="C">C
<option value="D">D
<option value="E">E
<option value="F">F
<option value="G">G
<option value="H">H
<option value="I">I
<option value="J" selected>J
<option value="K">K
<option value="L">L
<option value="M">M
<option value="N">N
<option value="O">O
<option value="P">P
<option value="Q">Q
<option value="R">R
<option value="S">S
<option value="T">T
<option value="U">U
<option value="V">V
<option value="W">W
<option value="X">X
<option value="Y">Y
<option value="Z">Z
</select> into <select name="BIFID_skipto"></p>
<option value="A">A
<option value="B">B
<option value="C">C
<option value="D">D
<option value="E">E
<option value="F">F
<option value="G">G
<option value="H">H
<option value="I" selected>I
<option value="J">J
<option value="K">K
<option value="L">L
<option value="M">M
<option value="N">N
<option value="O">O
<option value="P">P
<option value="Q">Q
<option value="R">R
<option value="S">S
<option value="T">T
<option value="U">U
<option value="V">V
<option value="W">W
<option value="X">X
<option value="Y">Y
<option value="Z">Z
</select></p>
<p>Alphabet Key: <input type=text name=BIFID_key value="" size=30> -
<span id="BIFID_Keymaker0" target="document.encoder.BIFID_key.value"></span></p>
<table border=0 cellspacing=0 cellpadding=0>
<tr><td valign=top>Tableau Used:</td><td> </td>
<td><b><span id="BIFID_alphabet"><tt>A B C D E<br>
F G H I K<br>
L M N O P<br>
Q R S T U<br>
V W X Y Z
</tt></span></b></td></tr>
</table>
<a href="#" onclick="Bifid.only_letters(); return false;">Only Letters</a> - Removes
all non-letters from the text.</p>
<div class="outputbox"><span id='BIFID_output' class='outputbox'></span></div>
<div class="outputbox"><span id='BIFID_output_bruteF' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Caesarian shift</h2><a class="an" name="caesar"> </a>
<p class="explanation">This is a standard Caesarian Shift cipher encoder, also known as
a rot-N encoder and is also a style of substitution cipher. This way, you can add one, two, or any number up
to 25 to your string and see how it changes. This is an offshoot of the <a
href="#rot13">rot13</a> encoder on this web site. To perform this shift
by hand, you could just write the alphabet on two strips of paper. Line
them up so the top strip's A matches the bottom strip's D (or something) and
then you can encode.</p>
<p class="explanation">This sort of cipher can also be known as a wheel cipher. This is where
an inner wheel has the alphabet around the outside, and that is placed upon
an outer wheel, also with the alphabet going around it. You can rotate the
wheels so that ABC lines up with ABC, or ABC may line up with QRS.</p>
<p class="explanation">To encode something, just pick an N and type in your message. To decode
something, subtract the encryption N from 26 and it should be decoded for
you.</p>
<div class="outputbox" style="font-weight:bold;"><small>Rot13:</small> <span id='CAESAR_rot13' class='outputbox'></span><a class="an" name="rot13"> </a></div>
<p class="explanation">
Brute force caesar cipher on a specific alphabet:<br>
Possible alphabets which you can copy-paste in the input box below:<br>
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br>
0123456789<br>
1234567890
</p>
<input type=text id=CAESAR_BRUTEFORCE_ALPHABET value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" size=50>
<div id='CAESAR_GENERAL'>Caesar A-Z output</div>
<p class="explanation">
If special characters are found, a 'smart' alphabet consisting of A-Z plus the special characters is created in an attempt to decode it.
</p>
<div id='CAESAR_smart'>Caesar extended alphabet output</div>
<p>
Brute force caesar cipher on an integer or hex range (0x00-0x7F).
<a class="an" name="caesar_bruteforce_range"> </a>
From: <input type=text name=CAESAR_BRUTEFORCE_FROM value="" size=3> -
To: <input type=text name=CAESAR_BRUTEFORCE_TO value="" size=3>
<input type="button" onclick="Caesar.bruteForceCustomRangeButton(); return false;" value=">">
or
<input type="button" onclick="Caesar.bruteForceRangeButton(0x00, 0x7F); return false;" value="0x00-0x7F">
<input type="button" onclick="Caesar.bruteForceRangeButton(0x80, 0xFF); return false;" value="0x80-0xFF">
<input type="button" onclick="Caesar.bruteForceRangeButton(0x00, 0xFF); return false;" value="0x00-0xFF">
<small>Hex values should begin with 0x, otherwise decimal is assumed.</small>
</p>
<div class="outputbox"><span id='CAESAR_out_hex' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Columnar Transposition</h2><a class="an" name="coltrans"> </a>
<p class="explanation">A columnar transposition, also known as a row-column transpose, is a very simple cipher to perform by hand.
First, you write your message in columns. Then, you just rearrange the
columns. For example. I have the message; "Which wristwatches are swiss
wristwatches." You convert everything to upper case and write it without
spaces. When you write it down, make sure to put it into columns and number
them. Let's use five columns.</p>
<table align=center border=1 cellpadding=3 cellspacing=0>
<tr><td> </td><th>Unencoded</th><th>Rearranged</th></tr>
<tr><td valign='top'>
<b>Column #:</b>
</td><td>
<tt><b><u>4 2 5 3 1</u></b><br>
W H I C H<br>
W R I S T<br>
W A T C H<br>
E S A R E<br>
S W I S S<br>
W R I S T<br>
W A T C H<br>
E S</tt>
</td><td>
<tt><b><u>1 2 3 4 5</u></b><br>
H H C W I<br>
T R S W I<br>
H A C W T<br>
E S R E A<br>
S W S S I<br>
T R S W I<br>
H A C W T<br>
S E</tt>
</td></tr>
</table>
<p class="explanation">Now, you just read the columns down in the order that you number them.
Above, you will see the key is 4 2 5 3 1, which means you write down the
last column first, then the second, then the fourth, the first, and finally
the middle. When you are all done, you will get
"HTHESTHHRASWRASCSCRSSCWWWESWWEIITAIIT". I can put the example's information
into the encoder for you:
<a href="#" onclick="ColumnarTransposition.insert_example(); return false">Encode</a> or
<a href="#" onclick="ColumnarTransposition.insert_example2(); return false">Decode</a></p>
<P class="explanation">This columnar transposition cipher implementation will also move spaces
around, so you can take "a b c" with a key of "2 1" and get " abc" (note
the two spaces in front). I suggest you remove all spaces before you encode
the text, but they should be preserved even if you don't. Newlines are ignored and not taken into consideration.</p>
<p><select name=colkey_type><option value="num">Numeric Key - Spaced Numbers
<option value="alpha">Key Word(s) - Duplicates numbered forwards
<option value="ahpla">Key Word(s) - Duplicates numbered backwards
</select>: <input type=text name=colkey><br>
The resulting columnar key: <b><span id='colkey_out'></span></b><br>
<input type=checkbox name="use_as_column_order"> - <label for="use_as_column_order">Use the key as column order instead of column labels</label></p>
<p>Columnar Transposition:</p>
<div class="outputbox"><span id='COLUMNARTRANS_output' class='outputbox'></span></div>
<div class="outputbox"><span id='COLUMNARTRANS_output_reverse' class='outputbox'></span></div>
<div class="outputbox"><span id='COLUMNARTRANS_output_bruteF' class='outputbox'></span></div>
<div class="outputbox"><span id='COLUMNARTRANS_output_permute' class='outputbox'></span></div>
<br>
<p>Transposition:</p>
<div class="outputbox"><span id='TRANSPOSITION_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Cryptogram / quipqiup</h2><a class="an" name="cryptogram"> </a><a class="an" name="quipqiup"> </a>
<p class="explanation"><i>quipqiup</i> is a fast and automated cryptogram solver by <a href="http://april.eecs.umich.edu/people/ebolson" target="_blank" class="extern">Edwin Olson</a>. It can solve simple substitution ciphers often found in newspapers, including puzzles like cryptoquips (in which word boundaries are preserved) and patristocrats (inwhi chwor dboun darie saren t). You can also see the <a href="http://quipqiup.com/help.php" target="_blank" class="extern">online help</a>.</p>
<div class="outputbox"><span id='QUIPQIUP_output' class='outputbox'></span></div>
<p>Or use <a href="http://rumkin.com/tools/cipher/cryptogram.php" target="_blank" class="extern">Cryptogram</a></p>
<div style="clear: both"></div>
<h2>Digraph</h2><a class="an" name="digraph"> </a>
<p class="explanation">Click the button to decode. Digraph calculation is computationally intensive, so it is a manual action. Quipqiup is auto launched after button is pressed.</p>
<input type="button" onclick="Digraph.button(); return false;" value="Digraph decode!">
<div class="outputbox"><span id='DIGRAPH_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>EBCDIC</h2><a class="an" name="ebcdic"> </a>
<p class="explanation">Extended Binary Coded Decimal Interchange Code (EBCDIC) is an 8-bit character encoding used mainly on IBM mainframe and IBM midrange computer operating systems.
EBCDIC descended from the code used with punched cards and the corresponding six bit binary-coded decimal code used with most of IBM's computer peripherals of the late 1950s and early 1960s.</p>
<div class="outputbox"><span id='EBCDIC_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Enigma</h2><a class="an" name="enigma"> </a>
<script>
var Sim = global_namespace.Import('startpad.enigma.sim');
</script>
<p class="explanation">
To learn more about the <a href="http://en.wikipedia.org/wiki/Enigma_machine" target="_blank" class="extern">Enigma Machine</a>,
try using the <a href="http://mckoss.com/Crypto/Enigma.htm" target="_blank" class="extern">Paper Engima</a>. You
can also read the <a href="http://code.google.com/p/startpad/source/browse/labs/js/enigma/enigma.js" target="_blank" class="extern">source code</a>
used by this Enigma Simulator.
</p>
<fieldset id="init_form">
<legend><b>Initialization</b></legend>
<ol>
<li>
<label for="rotors">Rotors:</label>
<input type="text" id="rotors"/>
</li>
<li>
<label for="position">Rotor Start:</label>
<input type="text" id="position"/>
</li>
<li>
<label for="rings">Rings:</label>
<input type="text" id="rings"/>
</li>
<li>
<label for="plugs">Plugboard:</label>
<input type="text" id="plugs"/>
</li>
<li>
<label for="passkey"></label>
<input type="button" id="passkey" value="Set from passkey"/>
</li>
</ol>
</fieldset>
<fieldset id="encoding">
<legend><b>Decoding</b></legend>
<ol>
<li id="rotor_display">
<label class="box" for="rot_1" style="font-size:18px;">Rotor:</label><span id="rot_1"></span><span id="rot_2"></span><span id="rot_3"></span>
</li>
<!--<li>
<label class="box" for="plain">Type Message Here:</label>
<textarea class="text-input" id="plain">QMJIDO MZWZJFJR</textarea>
</li>-->
<li>
<div class="outputbox"><span id='ENIGMA_output' class='outputbox'></span></div>
<div class="outputbox"><span id='ENIGMA_output_nospacing' class='outputbox'></span></div>
<div id="cipher"><span id="key_out"></span>
<!--<span id="cipher_out"></span>--></div>
</li>
<!--<li>
<input id="keep_spacing" type="checkbox" checked="true"/>
<label>Preserve spacing</label>
</li>-->
</ol>
</fieldset>
<script>Sim.Init();/*window.setTimeout('Sim.Init();',500);*/</script>
<h2>Gronsfeld cipher (Use Cryptool)</h2><a class="an" name="gronsfeld"> </a>
<p>Or <a href="http://rumkin.com/tools/cipher/gronsfeld.php">Gronsfeld</a></p>
<h2>Letter Numbers</h2><a class="an" name="numbers"> </a>
<p class="explanation">One of the first ciphers that kids learn is this "letter number" cipher.
You replace letters with a number: A=1, B=2, C=3, etc.</p>
<p class="explanation">When encrypting, only letters will be encoded. Non-letters will be
treated like spaces. When decrypting, numbers will be changed back to
letters, hyphens will be removed, and the rest fill act like spaces.</p>
Method: "ABC XYZ" becomes <select name="LETTERNUMBERS_method">
<option value="p0h1">1-2-3 24-25-26
<option value="p1h1">01-02-03 24-25-26
<option value="p1h0">010203 242526
</select>
<p>This is your encoded or decoded text:</p>
<div class="outputbox"><span id='LETTERNUMBERS_output' class='outputbox'></span></div>
<div class="outputbox"><span id='LETTERNUMBERS_output_reverse' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Least significant bit (LSB)</h2><a class="an" name="lsb"> </a>
<p class="explanation">LSB stego like. <br>
Masked with 0x01, 0x02, 0x03 and 0x04:</p>
<div class="outputbox"><span id='LSB_0x01_output' class='outputbox'></span></div>
<div class="outputbox"><span id='LSB_0x02_output' class='outputbox'></span></div>
<div class="outputbox"><span id='LSB_0x03_output' class='outputbox'></span></div>
<div class="outputbox"><span id='LSB_0x04_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Morse code</h2><a class="an" name="morse"> </a>
<p class="explanation">Morse Code, created by Samuel Morse, was designed to transmit letters
across telegrams. He wanted frequently used letters to have short codes and
less frequently used letters to have longer codes.</p>
<p class="explanation">It has since been used in many other situations. For a lot more
information, visit the <a href="http://www.wikipedia.org/wiki/Morse_code" target="_blank" class="extern">Wikipedia</a> entry on the topic.</p>
<p class="explanation">When encrypting, only letters and numbers will be encoded and the rest
will be treated like spaces. When decrypting, only periods and hyphens will
be decoded and the rest will be treated like spaces. This web page uses
International Morse Code with some additional enhancements, but without
support for foreign characters. It also is geared to help you decode
Morse Code snippets you find with the Reverse (flips the text) and Swap
(exchanges periods and hyphens) links.</p>
<p class="explanation">You can also insert the following phrases from the Kryptos statue:
<a href="#morse" onclick="return Morse.setMorse('... --- ...')">SOS</a>,
<a href="#morse" onclick="return Morse.setMorse('.-. --.-')">RQ</a>,
<a href="#morse" onclick='return Morse.setMorse(". . ... .... .- -.. --- .-- . .\n..-. --- .-. -.-. . ... . . . . .")'>SHADOW FORCES</a>,
<a href="#morse" onclick='return Morse.setMorse(". . ...- .. .-. - ..- .- .-.. .-.. -.-- .\n. . . . . . .. -. ...- .. ... .. -... .-.. .")'>VIRTUALLY INVISIBLE</a>,
<a href="#morse" onclick='return Morse.setMorse("- .. ... -.-- --- ..- .-.\n.--. --- ... .. - .. --- -.")'>...T IS YOUR POSITION</a>,
<a href="#morse" onclick='return Morse.setMorse(". -.. .. --. . - .- .-.. . . .\n.. -. - . .-. .--. .-. . - .- - .. -")'>DIGETAL INTERPRETATIT</a>,
<a href="#morse" onclick='return Morse.setMorse(".-.. ..- -.-. .. -.. . . .\n-- . -- --- .-. -.-- .")'>LUCID MEMORY</a>.
(<a href="http://www.voynich.net/Kryptos/"target="_blank" class="extern">See Photos</a>)</p>
<p>Your message: (<a href="#" onclick="Morse.reverse(); return false">Reverse</a> -
<a href="#morse" onclick="Morse.swapMorse(); return false">Swap</a>)<br>
<p>Morse code</p>
<div class="outputbox"><span id='MORSE_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<!--<h2>Multiply</h2><a class="an" name="multiply"> </a>
<p>Each character of the used alphabet is assigned to a value. If the alphabet of capital letters A-Z is used, this assignment results.<br>
Now a key between 1 and 26 is chosen. Each character in the message is multiplied with this key. For illustration purposes we use the message "GEHEIMNIS" and the key 3. The first character G corresponds to the six. 6*3=18. The 18th character in the used alphabet corresponds to the S. The first character in the ciphertext therefore would be S. The remaining characters are encoded in the same way.<br>
For the M, 12*3=36 would result. Since 36 is greater than the length of the used alphabet, 36 modulo 26 = 10 is calculated.</p>
<p>Each character from the plaintext is always mapped to the same character in the ciphertext as in the Caesar cipher. Even though this cipher seems to be more complex than the Caesar cipher, it is not more secure. It is actually less secure than the Caesar cipher because the number of possible keys is smaller.</p>
<div class="outputbox"><span id='MULTIPLY_output' class='outputbox'></span></div>
<div class="outputbox"><span id='MULTIPLY_output_bruteF' class='outputbox'></span></div>
<div style="clear: both"></div>-->
<h2>Maze</h2><a class="an" name="maze"> </a>
<p class="explanation">Going through the numbers like a maze</p>
1. Maze_hex_↖↳↳()
<div class="outputbox"><span id='MAZE_ltdd_output' class='outputbox'></span></div>
1. Maze_hex_↰↰↘()
<div class="outputbox"><span id='MAZE_rbuu_output' class='outputbox'></span></div>
2. Maze_hex_↖↳↱()
<div class="outputbox"><span id='MAZE_ltdu_output' class='outputbox'></span></div>
2. Maze_hex_↰↲↗()
<div class="outputbox"><span id='MAZE_rtdu_output' class='outputbox'></span></div>
3. Maze_hex_↙↱↱()
<div class="outputbox"><span id='MAZE_lbuu_output' class='outputbox'></span></div>
3. Maze_hex_↲↲↗()
<div class="outputbox"><span id='MAZE_rtdd_output' class='outputbox'></span></div>
4. Maze_hex_↙↱↳()
<div class="outputbox"><span id='MAZE_lbud_output' class='outputbox'></span></div>
4. Maze_hex_↲↰↘()
<div class="outputbox"><span id='MAZE_rbud_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>One Time Pad</h2><a class="an" name="otp"> </a>
<p class="explanation">It is said that the one-time pad is the best cipher anywhere. It is
uncrackable as long as you keep the messages short, use shorthand and
abbreviations, remove unnecessary letters, never reuse a pad, and have a
good enough random source for data.</p>
<p class="explanation">This implementation will take the letters (and letters only) from the pad
and encrypt the letters from your message. It leaves spaces, newlines
(enters / returns), punctuation, numbers, and all of the things that aren't
A-Z alone. Make sure that your pad is at least as long as the number
of characters in your message, otherwise your message will not be encoded.</p>
<p>The pad:<br><textarea name="ONETIMEPAD_pad" rows="5" cols="80"></textarea></p>
<div class="outputbox"><span id='ONETIMEPAD_output' class='outputbox'></span></div>
<div style="clear: both"></div>
<h2>Playfair Cipher</h2><a class="an" name="playfair"> </a>
<p class="explanation">The Playfair cipher is a digraph substitution cipher. It employs a table
where one letter of the alphabet is omitted, and the letters are arranged in
a 5x5 grid. Typically, the J is removed from the alphabet and an I takes
its place in the text that is to be encoded. Below is an unkeyed grid.</p>
<table border=0 cellpadding=0 cellspacing=0 class="r_box" style="margin: 8px 8px 8px 0px;" class="explanation"><tr><td class="r_box"><tt>A B C D E<br>
F G H I K<br>
L M N O P<br>
Q R S T U<br>
V W X Y Z</tt>
</td></tr></table>
<p class="explanation">To encode a message, one breaks it into two-letter chunks. Repeated
letters in the same chunk are usually separated by an X. The message,
"HELLO ONE AND ALL" would become "HE LX LO ON EA ND AL LX". Since there was
not an even number of letters in the message, it was padded with a spare X.
Next, you take your letter pairs and look at their positions in the grid.</p>
<p class="explanation">"HE" forms two corners of a rectangle. The other letters in the
rectangle are C and K. You start with the H and slide over to underneath
the E and write down K. Similarly, you take the E and slide over to the H
column to get C. So, the first two letters are "KC". "LX" becomes "NV" in
the same way.</p>
<p class="explanation">"LO" are in the same row. In this instance, you just slide the
characters one position to the right, resulting in "MP". The same happens
for "ON", resulting in "PO". "EA" becomes "AB" in the same way, but the E
is at the far edge. By shifting one position right, we scroll around back
to the left side and get A.</p>
<p class="explanation">"ND" are in a rectangle form and beomes "OC". "AL" are both in the same
column, so we just move down one spot. "AL" is changed into "FQ".
"LX" is another rectangle and is encoded as "NV".</p>
<p class="explanation">The resulting message is now "KC NV MP PO AB OC FQ NV" or