凯撒密码[A-Za-z] 加密和解密方法

前两天看的凯撒加密方式,在网上查了下完善个方法

/**
 * {String|str} 需要进行加密|解密的数据
 * {num|number} 需要进行移动的位数,为非负数时内容进行加密,否则为解密
 */
function Caesar(str,num) { 
    var newStr = "";    //接收结果
    var unit;           //基础值
    for(var i=0;i<str.length;i++){
      if(str.charCodeAt(i)>=65&&str.charCodeAt(i)<=90){
        //加密时内容为从前向后解析,解密时内容为从后向前解析,
        // str.charCodeAt(i) + num 找到当前字符与移动位置后的ASII码位置
        // (str.charCodeAt(i) + num - 65 + 26)%26  判断字符在26个字母中的最终位置
        newStr += String.fromCharCode((str.charCodeAt(i) + num - 65 + 26)%26 + 65); //在ASII码中找到对应字符,并添加到将返回的字符中
      }else if(str.charCodeAt(i)>=97&&str.charCodeAt(i)<=122){
        //同上理
        newStr += String.fromCharCode((str.charCodeAt(i) + num - 97 + 26)%26 + 97);
      }else{
        //特殊符号不做处理
        newStr+=String.fromCharCode(str.charCodeAt(i));
      }
    }
    console.log(newStr);
    return newStr;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值