我尝试了无数方法来使用离子实现凯撒密码的加密和解密,但无济于事。看看我的作品。
下面是我的用户界面。
这是我的代码
<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>
每次运行时它都会提示我。
谢谢。