Отображение массива Javascript, использование нескольких символов не работает - PullRequest
0 голосов
/ 11 мая 2018

Итак, с помощью этого кодера и декодера я хочу, чтобы он декодировал несколько символов, например числа в части декодера, но кажется, что ограничение составляет один символ. Поэтому мой вопрос заключается в том, как сделать так, чтобы код заметил, когда эти 8 цифр совпадают, и как превратить их в соответствующее письмо. Часть кодировщика полностью работает. Я пытался использовать кавычки вокруг цифр, но это не похоже на

HTML:

<h2> Encrypt: </h2>
<textarea type="text" id="Encrypted" style="text- 
transform:uppercase; resize: none; width: 350px;" 
onkeyup="javascript:this.value=this.value.toUpperCase();" 
rows="10" ></textarea>  
<br><br>

<input type="button" name="EncryptButton" value="Encrypt" 
onclick="Encrypt()">

<br><br>

<textarea type="text" id="Decrypted" style="text-transform:uppercase; 
resize: none; width: 350px;"    
onkeyup="javascript:this.value=this.value.toUpperCase();" rows="10"> 
</textarea>

<br><br>

<input type="button" name="DecryptButton" value="Decrypt" 
onclick="Decrypt()">

JAVASCRIPT:

var map = {
A: '01011010 ', B: '01011001 ', C: '01011000 ',
D: '01010111 ', E: '01010110 ', F: '01010101 ',
G: '01010100 ', H: '01010011 ', I: '01010010 ',
J: '01010001 ', K: '01010000 ', L: '01001111 ',
M: '01001110 ', N: '01001101 ', O: '01001100 ',
P: '01001011 ', Q: '01001010 ', R: '01001001 ',
S: '01001000 ', T: '01000111 ', U: '01000110 ',
V: '01000101 ', W: '01000100 ', X: '01000011 ',
Y: '01000010 ', Z: '01000001 '
};

var map2 = {
01011010: "A", 01011001: "B", 01011000: "C",
01010111: "D", 01010110: "E", 01010101: "F",
01010100: "G", 01010011: "H", 01010010: "I",
01010001: "J", 01010000: "K", 01001111: "L",
01001110: "M", 01001101: "N", 01001100: "O",
01001011: "P", 01001010: "Q", 01001001: "R",
01001000: "S", 01000111: "T", 01000110: "U",
01000101: "V", 01000100: "W", 01000011: "X",
01000010: "Y", 01000001: "Z"
};

function Encrypt() 
{

var inputEncrypted = document.getElementById("Encrypted");
var EncryptedText = inputEncrypted.value;
var newText = "";

 for(var i=0; i < EncryptedText.length; i++) {
   switch(EncryptedText[i]) {
       case "A":
          newText += map.A;
          break;
      case "B":
          newText += map.B;
          break;
      case "C":
          newText += map.C;
          break;
      case "D":
          newText += map.D;
          break;
      case "E":
          newText += map.E;
          break;
      case "F":
          newText += map.F;
          break;
      case "G":
          newText += map.G;
          break;
      case "H":
          newText += map.H;
          break;
      case "I":
          newText += map.I;
          break;
      case "J":
          newText += map.J;
          break;
      case "K":
          newText += map.K;
          break;
      case "L":
          newText += map.L;
          break;
      case "M":
          newText += map.M;
          break;
      case "N":
          newText += map.N;
          break;
      case "O":
          newText += map.O;
          break;
      case "P":
          newText += map.P;
          break;
      case "Q":
          newText += map.Q;
          break;
      case "R":
          newText += map.R;
          break;
      case "S":
          newText += map.S;
          break;
      case "T":
          newText += map.T;
          break;
      case "U":
          newText += map.U;
          break;
      case "V":
          newText += map.V;
          break;
      case "W":
          newText += map.W;
          break;
      case "X":
          newText += map.X;
          break;
      case "Y":
          newText += map.Y;
          break;
      case "Z":
          newText += map.Z;
          break;
      case " ":
          newText += " ";
      default:
          newText += EncryptedText[i];
    };
 }

 inputEncrypted.value = newText;

 }

function Decrypt() 
{

 var inputDecrypted = document.getElementById("Decrypted");
 var DecryptedText = inputDecrypted.value;
 var newText2 = "";

 for(var o=0; o < DecryptedText.length; o++) {
   switch(DecryptedText[o]) {
        case "A":
          newText2 += map2.A;
          break;
      case "B":
          newText2 += map2.B;
          break;
      case "C":
          newText2 += map2.C;
          break;
      case "D":
          newText2 += map2.D;
          break;
      case "E":
          newText2 += map2.E;
          break;
      case "F":
          newText2 += map2.F;
          break;
      case "G":
          newText2 += map2.G;
          break;
      case "H":
          newText2 += map2.H;
          break;
      case "I":
          newText2 += map2.I;
          break;
      case "J":
          newText2 += map2.J;
          break;
      case "K":
          newText2 += map2.K;
          break;
      case "L":
          newText2 += map2.L;
          break;
      case "M":
          newText2 += map2.M;
          break;
      case "N":
          newText2 += map2.N;
          break;
      case "O":
          newText2 += map2.O;
          break;
      case "P":
          newText2 += map2.P;
          break;
      case "Q":
          newText2 += map2.Q;
          break;
      case "R":
          newText2 += map2.R;
          break;
      case "S":
          newText2 += map2.S;
          break;
      case "T":
          newText2 += map2.T;
          break;
      case "U":
          newText2 += map2.U;
          break;
      case "V":
          newText2 += map2.V;
          break;
      case "W":
          newText2 += map2.W;
          break;
      case "X":
          newText2 += map2.X;
          break;
      case "Y":
          newText2 += map2.Y;
          break;
      case "Z":
          newText2 += map2.Z;
          break;
      case " ":
          newText2 += " ";
      default:
          newText2 += DecryptedText[i];
     };
 }

   inputDecrypted.value = newText2;

}

1 Ответ

0 голосов
/ 11 мая 2018

Вам нужны необработанные данные шифрования без пробела в конце, то же самое относится и к ключам объекта дешифрования, где ключи должны быть записаны в виде строк, поскольку начальный ноль интерпретируется как восьмеричное число:

var map2 = { 01011010: "A", 01011001: "B", 01011000: "C", 01010111: "D", 01010110: "E", 01010101: "F", 01010100: "G", 01010011: "H", 01010010: "I", 01010001: "J", 01010000: "K", 01001111: "L", 01001110: "M", 01001101: "N", 01001100: "O", 01001011: "P", 01001010: "Q", 01001001: "R", 01001000: "S", 01000111: "T", 01000110: "U", 01000101: "V", 01000100: "W", 01000011: "X", 01000010: "Y", 01000001: "Z" };

console.log(map2);

Для получения значения расшифровки вам нужно разделить пробел и взять строку в качестве ключа для получения расшифрованного значения.

onkeyup не нуждается в javascript: в качестве префикса, потому что он ожидает Javascript по проекту.

Для имен переменных и функций, которые не являются классами или инстанцируемыми функциями (те, которые позже используются с оператором new), обычно начинается с маленькой буквы.

var map = { A: '01011010', B: '01011001', C: '01011000', D: '01010111', E: '01010110', F: '01010101', G: '01010100', H: '01010011', I: '01010010', J: '01010001', K: '01010000', L: '01001111', M: '01001110', N: '01001101', O: '01001100', P: '01001011', Q: '01001010', R: '01001001', S: '01001000', T: '01000111', U: '01000110', V: '01000101', W: '01000100', X: '01000011', Y: '01000010', Z: '01000001'},
    map2 = { '01011010': "A", '01011001': "B", '01011000': "C", '01010111': "D", '01010110': "E", '01010101': "F", '01010100': "G", '01010011': "H", '01010010': "I", '01010001': "J", '01010000': "K", '01001111': "L", '01001110': "M", '01001101': "N", '01001100': "O", '01001011': "P", '01001010': "Q", '01001001': "R", '01001000': "S", '01000111': "T", '01000110': "U", '01000101': "V", '01000100': "W", '01000011': "X", '01000010': "Y", '01000001': "Z" };

function encrypt() {
    var inputEncrypted = document.getElementById("Encrypted"),
        text = inputEncrypted.value,
        encrypted = "",
        i;

    for (i = 0; i < text.length; i++) {
        encrypted += encrypted && ' ';
        encrypted += map[text[i]] || text[i];
    }
    inputEncrypted.value = encrypted;
}

function decrypt() {
    var inputDecrypted = document.getElementById("Decrypted"),
        code = inputDecrypted.value.split(' '),
        decrypted = "",
        i;

    for (i = 0; i < code.length; i++) {
        decrypted += map2[code[i]] || code[i];
    }
    inputDecrypted.value = decrypted;
}
<h2>Encrypt:</h2>
<textarea type="text" id="Encrypted" style="text- 
transform:uppercase; resize: none; width: 350px;" onkeyup="this.value = this.value.toUpperCase();" rows="10"></textarea><br><br>
<input type="button" name="EncryptButton" value="Encrypt" onclick="encrypt()"><br><br>
<textarea type="text" id="Decrypted" style="text-transform:uppercase; 
resize: none; width: 350px;" onkeyup="this.value = this.value.toUpperCase();" rows="10"></textarea><br><br>
<input type="button" name="DecryptButton" value="Decrypt" onclick="decrypt()">
...