我业余时间一直在研究数据加密程序。我已经添加了自己的加密层,并且尝试添加修改后的Caesar密码,该密码在移动时会从ASCII字符列表中移动空格,数字和其他字符。
我已经修改了两个脚本:
两者均无法正常工作。
文本是输入的字符,c
是ASCII中的单个字符,结果是结果。
var result = "";
for (var i = 0; i < text.length;) {
var c = text.charCodeAt(i);
if (32<=c&&c<=126){result+=String.fromCharCode((c-32+key)%94+32);}
else throw("character not within range");i++};
我已经修改了此代码,因此它使用特殊字符,但是在解密时,如果我有特殊字符并且密钥大于约20,则字符超出范围并返回空白。
答案 0 :(得分:0)
实际上我已经检查了您的脚本,它可以正常工作。我把它放在一个函数里面:
const text = 'abcABC';
const key = 10;
function caesar(text, key) {
var result = '';
for (var i = 0; i < text.length; ) {
var c = text.charCodeAt(i);
if (32 <= c && c <= 126) {
result += String.fromCharCode(((c - 32 + key) % 94) + 32);
} else throw 'character not within range';
i++;
}
return result;
}
const x = caesar(text, key);
console.log(x); // -> klmKLM
const y = caesar(x, -key);
console.log(y); // -> abcABC
答案 1 :(得分:0)
找到了自己的修补程序
var result = ``;
for (var i = 0; i < text.length;) {
var c = text.charCodeAt(i);
for (var a = 0; a < key;){
c=c-1;
if (c<32){
c=c+94;
};
a++;
console.log(a);
}
result+=String.fromCharCode(c);
i++;
}
完美运行,甚至支持多行!