在JavaScript中寻找凯撒的密码脚本,我可以对其进行修改以允许所有(可键入的)ASCII字符

问题描述 投票:1回答:2

我在业余时间一直在研究数据加密程序。我已经添加了自己的加密层,并且尝试添加修改后的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,则字符超出范围并返回空白。

javascript node.js encryption
2个回答
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

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++;
    }

完美运行,甚至支持多行!

© www.soinside.com 2019 - 2024. All rights reserved.