Skip to content

Instantly share code, notes, and snippets.

@neizod
Created March 29, 2014 17:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neizod/9858656 to your computer and use it in GitHub Desktop.
Save neizod/9858656 to your computer and use it in GitHub Desktop.
[quick-dirty] html+js hack for cracking the substitution encryption.
<h3>encrypted sentence</h3>
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<input name="text" size="40" />
<button id="mk">make</button>
<hr />
<h3>decrypted sentence</h3>
<div id="box"></div>
<hr />
<h3>substitution chars</h3>
<table><tr><td>
<ul>
<li>a = <input name="a" size="1" /></li>
<li>b = <input name="b" size="1" /></li>
<li>c = <input name="c" size="1" /></li>
<li>d = <input name="d" size="1" /></li>
<li>e = <input name="e" size="1" /></li>
<li>f = <input name="f" size="1" /></li>
<li>g = <input name="g" size="1" /></li>
<li>h = <input name="h" size="1" /></li>
<li>i = <input name="i" size="1" /></li>
<li>j = <input name="j" size="1" /></li>
<li>k = <input name="k" size="1" /></li>
<li>l = <input name="l" size="1" /></li>
<li>m = <input name="m" size="1" /></li>
</ul>
</td><td>
<ul>
<li>n = <input name="n" size="1" /></li>
<li>o = <input name="o" size="1" /></li>
<li>p = <input name="p" size="1" /></li>
<li>q = <input name="q" size="1" /></li>
<li>r = <input name="r" size="1" /></li>
<li>s = <input name="s" size="1" /></li>
<li>t = <input name="t" size="1" /></li>
<li>u = <input name="u" size="1" /></li>
<li>v = <input name="v" size="1" /></li>
<li>w = <input name="w" size="1" /></li>
<li>x = <input name="x" size="1" /></li>
<li>y = <input name="y" size="1" /></li>
<li>z = <input name="z" size="1" /></li>
</ul>
</td></tr></table>
<button id="try">try</button>
<hr />
<h3>stats</h3>
<div id="stat"></div>
<script>
var sentence = 'aqjj szf. jqfk rxo\'z pqsc kbhi zq!';
$('button[id=mk]').click(function(){
sentence = $('input[name=text]').val();
$('div#box').html('<span style="color: red;">'+sentence+'</span>');
var stats = {};
for (var i=0; i<sentence.length; i++) {
var ch = sentence[i];
typeof stats[ch] == 'undefined' ?
stats[ch] = 0 :
stats[ch] += 1 ;
}
var sorted = [];
for (var ch in stats) sorted.push([ch, stats[ch]]);
sorted.sort(function(a, b){a[1]-b[1]});
for (var i=0; i<sorted.length; i++) sorted[i] = $('<li>').html(sorted[i][0] + ' = ' + sorted[i][1]);
$('div#stat').html($('<ul>').html(sorted));
});
$('button[id=try]').click(function(){
var out = '';
for (var i=0; i<sentence.length; i++) {
var ch = sentence[i];
if ('a' <= ch && ch <= 'z') {
var sb = $('input[name='+ch+']').val();
var rd = '<span style="color: red;">'+ch+'</span>'
out += sb.length == 1 ? sb : rd ;
} else {
out += ch
}
}
$('div#box').html(out);
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment