Это более чистый способ, и он будет легче поддерживать методы кодирования и декодирования.Мы храним символы в массиве, где позиция это код.Разрешить использовать для сопоставления в обоих направлениях.
// Simple array of chars where their index is the 'code'
let lexicon = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", ">", "<", "-", "_", "+", "=", "{", "", "[", "]", "|", ",", ".", "?", "/", "'", '"', "", ";", " "];
// Function to take a string and encode it using a simple map.
const encodeData = (data, lex) => data.split('').map(c => lex.indexOf(c) + 1);
// Decode does the reverse
const decodeData = (data, lex) => data.map(d => lex[d]);
var encryption = [];
var cvalue = 0;
var code = prompt("Type In Encryption Password [Beta Encryptor]");
alert(encodeData(code, lexicon));
function runner() {
var abc = document.getElementById('input').value;
encryption = encodeData(abc,lexicon);
if (encryption.length % 2 === 1) {
encryption.push(93);
alert("The Key was Edited Because The Key needs to be even");
}
document.getElementById('runEncryption').innerHTML = encryption.join();
alert(encryption); //If this was in the loop, it won't work
}
<html>
<input type="text" id="input">
<button onclick="runner();">Add Text to Encrypt</button>
<br>
<div id="runEncryption"></div>
</html>
Здесь используется оператор переключения (лучше подходит для этого типа теста.)
var encryption = [];
var cvalue = 0;
var code = prompt("Type In Encryption Password [Beta Encryptor]");
var codeLength = code.length * 100;
for (var j = 0; j < code.length; j++) {
switch (code[j]) {
case "0":
value = 0;
break;
case "1":
value = 1;
break;
case "2":
value = 2;
break;
case "3":
value = 3;
break;
case "4":
value = 4;
break;
case "5":
value = 5;
break;
case "6":
value = 6;
break;
case "7":
value = 7;
break;
case "8":
value = 8;
break;
case "9":
value = 9;
break;
case "A":
value = 10;
break;
case "B":
value = 11;
break;
case "C":
value = 12;
break;
case "D":
value = 13;
break;
case "E":
value = 14;
break;
case "F":
value = 15;
break;
case "G":
value = 16;
break;
case "H":
value = 17;
break;
case "I":
value = 18;
break;
case "J":
value = 19;
break;
case "K":
value = 20;
break;
case "L":
value = 21;
break;
case "M":
value = 22;
break;
case "N":
value = 23;
break;
case "O":
value = 24;
break;
case "P":
value = 25;
break;
case "Q":
value = 26;
break;
case "R":
value = 27;
break;
case "S":
value = 28;
break;
case "T":
value = 29;
break;
case "U":
value = 30;
break;
case "V":
value = 31;
break;
case "W":
value = 32;
break;
case "X":
value = 33;
break;
case "Y":
value = 34;
break;
case "Z":
value = 35;
break;
case "a":
value = 36;
break;
case "b":
value = 37;
break;
case "c":
value = 38;
break;
case "d":
value = 39;
break;
case "e":
value = 40;
break;
case "f":
value = 41;
break;
case "g":
value = 42;
break;
case "h":
value = 43;
break;
case "i":
value = 44;
break;
case "j":
value = 45;
break;
case "k":
value = 46;
break;
case "l":
value = 47;
break;
case "m":
value = 48;
break;
case "n":
value = 49;
break;
case "o":
value = 50;
break;
case "p":
value = 51;
break;
case "q":
value = 52;
break;
case "r":
value = 53;
break;
case "s":
value = 54;
break;
case "t":
value = 55;
break;
case "u":
value = 56;
break;
case "v":
value = 57;
break;
case "w":
value = 58;
break;
case "x":
value = 59;
break;
case "y":
value = 60;
break;
case "z":
value = 61;
break;
case "~":
value = 62;
break;
case "`":
value = 63;
break;
case "!":
value = 64;
break;
case "@":
value = 65;
break;
case "#":
value = 66;
break;
case "$":
value = 67;
break;
case "%":
value = 68;
break;
case "^":
value = 69;
break;
case "&":
value = 70;
break;
case "*":
value = 71;
break;
case "(":
value = 72;
break;
case ")":
value = 73;
break;
case ">":
value = 74;
break;
case "<":
value = 75;
break;
case "-":
value = 76;
break;
case "_":
value = 77;
break;
case "+":
value = 78;
break;
case "=":
value = 79;
break;
case "{":
value = 80;
break;
case "":
value = 81;
break;
case "[":
value = 82;
break;
case "]":
value = 83;
break;
case "|":
value = 84;
break;
case ",":
value = 85;
break;
case ".":
value = 86;
break;
case "?":
value = 87;
break;
case "/":
value = 88;
break;
case "'":
value = 89;
break;
case '"':
value = 90;
break;
case ":":
value = 91;
break;
case ";":
value = 92;
break;
case " ":
value = 93;
break;
value = 93;
}
encryption.push(value);
}
if (encryption.length % 2 === 1) {
encryption.push(93);
alert("The Key was Edited Because The Key needs to be even");
}
document.write(encryption);
function runner () {
var entext = [];
var p = 0;
var abc = document.getElementById('input');
var ab = abc.length;
while (p <= ab) {
entext.push(document.getElementById('input').value[p]);
document.getElementById('runEncryption').innerHTML = entext[p];
p++;
}
alert(ab); //If this was in the loop, it won't work
}
<html>
<input type="text" id="input">
<button onclick="runner();">Add Text to Encrypt</button>
<br>
<div id="runEncryption"></div>
</html>