【问题标题】:Caesar cipher with JavaScript使用 JavaScript 的凯撒密码
【发布时间】:2022-11-28 03:08:31
【问题描述】:

我检查了具有不同代码变体的不同网站,但找不到合适的答案。 我需要创建 2 个函数,其中: -1st 函数将使用密钥加密给定的消息,该密钥是字符串; 例如如果 Message=hello 且 key=123(因此键将为 1、2、3),输出应为“igomq” -2nd 将破译 我已经编写了代码,但这仅在密钥为“123”时有效。如何改进?

`

function cipher(message, key) {
    const arrOfKeys = key.split("")
    const cipheredMessage = []
    let newLettersArr = []
    for (let i = 0; i < message.length; i++) {
        let remain = i % arrOfKeys.length
        if (remain >= 0) {
            let newLetter = message.charCodeAt(i) + (remain + 1)
            newLettersArr.push(newLetter)
        }
    }
    newLettersArr.forEach((letter) => {
        let cipheredLetter = String.fromCharCode(letter)
        cipheredMessage.push(cipheredLetter)
    })
    return cipheredMessage
}

function deCipher(message, key) {
    const arrOfKeys = key.split("")
    const cipheredMessage = []
    let newLettersArr = []
    for (let i = 0; i < message.length; i++) {
        let remain = i % arrOfKeys.length
        if (remain >= 0) {
            let newLetter = message.charCodeAt(i) - (remain + 1)
            newLettersArr.push(newLetter)
        }
    }
    newLettersArr.forEach((letter) => {
        let cipheredLetter = String.fromCharCode(letter)
        cipheredMessage.push(cipheredLetter)
    })
    return cipheredMessage
}

console.log(cipher("hello", "123"))
console.log(deCipher("igomq", "123"))

`

【问题讨论】:

    标签: javascript arrays caesar-cipher


    【解决方案1】:

    看起来您需要从 arrOfKeys 获取值以递增/递减 char 代码。

    function cipher(message, key) {
        const arrOfKeys = key.split("");
        const cipheredMessage = [];
        let newLettersArr = [];
        for (let i = 0; i < message.length; i++) {
            let remain = i % arrOfKeys.length;
            if (remain >= 0) {
                let newLetter = message.charCodeAt(i) + +arrOfKeys[remain];
                newLettersArr.push(newLetter);
            }
        }
        newLettersArr.forEach((letter) => {
            let cipheredLetter = String.fromCharCode(letter);
            cipheredMessage.push(cipheredLetter);
        });
        return cipheredMessage;
    }
    
    function deCipher(message, key) {
        const arrOfKeys = key.split("");
        const cipheredMessage = [];
        let newLettersArr = [];
        for (let i = 0; i < message.length; i++) {
            let remain = i % arrOfKeys.length;
            if (remain >= 0) {
                let newLetter = message.charCodeAt(i) - arrOfKeys[remain];
                newLettersArr.push(newLetter);
            }
        }
        newLettersArr.forEach((letter) => {
            let cipheredLetter = String.fromCharCode(letter);
            cipheredMessage.push(cipheredLetter);
        });
        return cipheredMessage;
    }
    
    console.log(cipher("hello", "5123"))
    console.log(deCipher("mfnot", "5123"))

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多