2022-02-21 06:44:42 +00:00
|
|
|
|
let zero_zwnj = ''
|
|
|
|
|
let one_zwl = ''
|
|
|
|
|
let two_zwsp = ''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function doCheck(){
|
|
|
|
|
if (document.getElementsByName('hideMode')[0].checked){
|
|
|
|
|
document.getElementsByName('hideTextZone')[0].style.display = "block"
|
|
|
|
|
document.getElementsByClassName('encode')[0].style.display = "block"
|
|
|
|
|
document.getElementsByClassName('decode')[0].style.display = "none"
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
document.getElementsByName('hideTextZone')[0].style.display = "none"
|
|
|
|
|
document.getElementsByClassName('encode')[0].style.display = "none"
|
|
|
|
|
document.getElementsByClassName('decode')[0].style.display = "block"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
document.getElementsByName('hideMode')[0].onclick = function(){
|
|
|
|
|
doCheck()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
document.getElementsByClassName('encode')[0].onsubmit = function(e){
|
|
|
|
|
for (let i of document.getElementsByName('inputSecret')[0].value){
|
|
|
|
|
if (i.charCodeAt(0) >= 729){
|
|
|
|
|
alert("Unsupported character in message")
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
e.preventDefault()
|
|
|
|
|
let coverText = document.getElementsByName('hideText')[0].value
|
|
|
|
|
let cover1 = ""
|
|
|
|
|
let cover2 = ""
|
|
|
|
|
if (coverText.length){
|
|
|
|
|
cover1 = coverText.substring(0, coverText.length / 2)
|
|
|
|
|
cover2 = coverText.substring(coverText.length / 2, coverText.length)
|
|
|
|
|
}
|
|
|
|
|
document.getElementsByName('output')[0].value = cover1 + textToTern(document.getElementsByName('inputSecret')[0].value) + cover2
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
document.getElementsByClassName('decode')[0].onsubmit = function(e){
|
|
|
|
|
let input = document.getElementsByName('inputSecret')[1].value
|
|
|
|
|
|
|
|
|
|
console.debug(input.length)
|
|
|
|
|
console.debug(ternToText(input, true))
|
|
|
|
|
document.getElementsByName('output')[1].value = ternToText(input)
|
|
|
|
|
e.preventDefault()
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-15 20:15:12 +00:00
|
|
|
|
document.getElementById('copyResult').onclick = function(){
|
|
|
|
|
navigator.clipboard.writeText(document.getElementsByName('output')[0].value).then(function() {
|
|
|
|
|
/* clipboard successfully set */
|
|
|
|
|
alert("Copied to clipboard")
|
|
|
|
|
}
|
|
|
|
|
).catch(function(err) {
|
|
|
|
|
|
|
|
|
|
alert("Failed to copy to clipboard")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-21 06:44:42 +00:00
|
|
|
|
|
|
|
|
|
let ternToText = function(input){
|
|
|
|
|
|
|
|
|
|
input = input.replaceAll(zero_zwnj, '0')
|
|
|
|
|
input = input.replaceAll(one_zwl, '1')
|
|
|
|
|
input = input.replaceAll(two_zwsp, '2')
|
|
|
|
|
|
|
|
|
|
if(input.match(/[120]{6}/g)){
|
|
|
|
|
let wFromTernary = input.match(/([120]{6}|\s+)/g).map(function(fromTernary){
|
|
|
|
|
return String.fromCharCode(parseInt(fromTernary, 3) )
|
|
|
|
|
}).join('')
|
|
|
|
|
return wFromTernary.replaceAll("\u0000", "")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* based on stackoverflow.com/questions/21354235/converting-binary-to-text-using-javascript */
|
|
|
|
|
let textToTern = function(text) {
|
|
|
|
|
let output = []
|
|
|
|
|
let length = text.length
|
|
|
|
|
for (var i = 0;i < length; i++) {
|
|
|
|
|
let bin = text[i].charCodeAt().toString(3).replaceAll('0', zero_zwnj).replaceAll('1', one_zwl).replaceAll('2', two_zwsp)
|
|
|
|
|
output.push(Array(6-bin.length+1).join(zero_zwnj) + bin)
|
|
|
|
|
}
|
|
|
|
|
return output.join('')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
doCheck()
|