美文网首页
位移密码算法挑战

位移密码算法挑战

作者: 南方番茄 | 来源:发表于2018-10-05 01:06 被阅读0次

    著名的凯撒密码Caesar cipher,又叫移位密码。

    移位密码也就是密码中的字母会按照指定的数量来做移位。

    一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔'O',以此类推。

    写一个ROT13函数,实现输入加密字符串,输出解密字符串。

    所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,就跳过它们。
    代码实现:

    function rot13(str) { // LBH QVQ VG!
    var start = "A".charCodeAt(0);
    var end = "Z".charCodeAt(0);
    var objstr = ""
    
    var strs = str.split(" ");
    for(var i=0;i<strs.length;i++){
        for(var j=0;j<strs[i].length;j++){
          
            if (strs[i].charCodeAt(j)>=start&&strs[i].charCodeAt(j)<=end) {
                if (strs[i].charCodeAt(j)-13>=start&&strs[i].charCodeAt(j)-13<=end) {
                    objstr+=String.fromCharCode(strs[i].charCodeAt(j)-13);
                }else{
                    objstr+=String.fromCharCode(strs[i].charCodeAt(j)+13);
                }
            } else {
                objstr+=strs[i][j];
            }
        }
        objstr+=" ";
    }
    return objstr.substr(0,objstr.length-1);
    }
    
    rot13("SERR PBQR PNZC");
    
    

    相关文章

      网友评论

          本文标题:位移密码算法挑战

          本文链接:https://www.haomeiwen.com/subject/zsmfaftx.html