JSFiddle - React, Tailwind, and code Playground
HTML
<input id='input' value='I love you'/>
<button id='obfuscate'>obfuscate</button>
<br/>
<textarea id='obfuscated'></textarea>
CSS
#obfuscated {
width: 100%;
height: 350px;
}
JavaScript
var obfuscateMap = {
'c': ['(1+{})[1+11>>>1]','(-{}+{})[-1+1e1-1]'],
'o': ['[[]+{}][+!1][1]','([]+1+{})[1<<1]'],
'n': ['([]+1/[])[1<<1>>1]'],
's': ['([1<1]+[])[1+11>>>1+1]'],
't': ['[[!!1]+1][+[]][1-1]','(1+[!!1])[1]'],
'r': ['([]+!!/!/)[1|1]','[!!/!!/+[]][+[]][1&1]'],
'u': ['(/1/[1]+[])[!1%1]','(/[<+>]/[1&1|1]+[1.1])[1/11.1&1.11]'],
'f': ['([]+/-/[(!!1+[])[1>>1]+(!!1+[])[1<<1^1]+(!1+[])[1|1<<1]+(!!1+[])[1^1]])[1^1]'],
'e': ['([]+![])[1<<1<<1]','([,][~1]+[])[1-~1]'],
'x': ['[([]+![])[1<<1<<1]+(/|/[(1+{})[1+11>>>1]+[[]+{}][+!1][1]+([]+1/[])[1<<1>>1]+([1<1]+[])[1+11>>>1+1]+[[!!1]+1][+[]][1-1]+([]+!!/!/)[1|1]+(/1/[1]+[])[!1%1]+(-{}+{})[-1+1e1-1]+(1+[!!1])[1]+([]+1+{})[1<<1]+[!!/!!/+[]][+[]][1&1]]+/=/)[1e1+(1<<1|1)+(([]+/-/[(!!1+[])[1>>1]+(!!1+[])[1<<1^1]+(!1+[])[1|1<<1]+(!!1+[])[1^1]])[1^1]==+!1)]+(!![]+{})[1|1<<1]+[1+{}+1][!1+!1][(11>>1)+1]][1>>1][1]'],
'v': ['/\\[[^1]+\\]/[([]+![])[1<<1<<1]+(/|/[(1+{})[1+11>>>1]+[[]+{}][+!1][1]+([]+1/[])[1<<1>>1]+([1<1]+[])[1+11>>>1+1]+[[!!1]+1][+[]][1-1]+([]+!!/!/)[1|1]+(/1/[1]+[])[!1%1]+(-{}+{})[-1+1e1-1]+(1+[!!1])[1]+([]+1+{})[1<<1]+[!!/!!/+[]][+[]][1&1]]+/=/)[1e1+(1<<1|1)+(([]+/-/[(!!1+[])[1>>1]+(!!1+[])[1<<1^1]+(!1+[])[1|1<<1]+(!!1+[])[1^1]])[1^1]==+!1)]+(!![]+{})[1|1<<1]+[1+{}+1][!1+!1][(11>>1)+1]](([]+/-/[(!!1+[])[1>>1]+(!!1+[])[1<<1^1]+(!1+[])[1|1<<1]+(!!1+[])[1^1]]))[1&.1][11>>>1]'],
'I': ['[[]+1/!1][1^1][1>>1]'],
' ': ['({}+[])[1<<1^11>>1]','[[]+{}][!1.1%1][11111.1%11.1*111e11|!1]'],
'l': ['([]+!!-[])[1<<1]'],
'o': ['[/~/+{}][+!1][-~1<<1]','[[],[]+{}][1<<1>>>1][1||1]'],
'y': ['(/1/+1/[1<1][1%1])[1^11]']
}, obfuscate = function(input, map) {
var out = [], char;
for(char = 0; char < input.length; char++) {
if(map.hasOwnProperty(input[char])) {
out.push(map[input[char]][Math.floor(Math.random()*map[input[char]].length)])
} else {
out.push('?');
}
}
return...