0

我尝试了无数方法来使用离子实现凯撒密码的加密和解密,但无济于事。看看我的作品。

下面是我的用户界面。

用户界面

这是我的代码

<ion-header>
  <ion-navbar>
    <ion-title>
      Caesar Cipher
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <!-->
  <ion-list>
    <ion-item>
      <ion-label stacked>Text</ion-label>
      <ion-input type="text" id="text"></ion-input>
    </ion-item>

    <ion-item>
      <ion-label stacked>Shift</ion-label>
      <ion-input type="number" id="shift" value="13"></ion-input>
    </ion-item>
  </ion-list>
  <-->

    Text:
    <input type="text" id="text" /> <br> Shift:
    <input type="text" id="number" id="shift" value="13" /> <br>

    <button onclick="doCrypt(false);">Decrypt</button>
    <button onclick="doCrypt(true);">Encrypt</button>

    <script>
      "use strict";

      function doCrypt(isDecrypt) {
        var shiftText = document.getElementById("shift").value;
        if (!/^-?\d+$/.test(shiftText)) {
          alert("Shift is not an integer");
          return;
        }
        var shift = parseInt(shiftText, 10);
        if (shift < 0 || shift >= 26) {
          alert("Shift is out of range");
          return;
        }
        if (isDecrypt)
          shift = (26 - shift) % 26;
        var textElem = document.getElementById("text");
        textElem.value = caesarShift(textElem.value, shift);
      }

      function caesarShift(text, shift) {
        var result = "";
        for (var i = 0; i < text.length; i++) {
          var c = text.charCodeAt(i);
          if (65 <= c && c <= 90) result += String.fromCharCode((c - 65 + shift) % 26 + 65); // Uppercase
          else if (97 <= c && c <= 122) result += String.fromCharCode((c - 97 + shift) % 26 + 97); // Lowercase
          else result += text.charAt(i); // Copy
        }
        return result;
      }
    </script>

</ion-content>

每次运行时它都会提示我。

错误

谢谢。

4

0 回答 0