FCC-----------Caesars Cipher

xiaoxiao2021-02-28  76

让上帝的归上帝,凯撒的归凯撒。

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。

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

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

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

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

由于用到charCodeAt()和fromCharCode()

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。

stringObject.charCodeAt(index) 注释:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。

fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。

String.fromCharCode(numX,numX,...,numX)

注释:该方法是 String 的静态方法,字符串中的每个字符都由单独的数字 Unicode 编码指定。

它不能作为您已创建的 String 对象的方法来使用。因此它的语法应该是 String.fromCharCode(),而不是 myStringObject.fromCharCode()。

function rot13(str) { // LBH QVQ VG! var newarr=[]; for(var i=0;i<str.length;i++){ if(str.charCodeAt(i)<65||str.charCodeAt(i)>90){ newarr.push(str.charAt(i)); }else if(str.charCodeAt(i)>77){ newarr.push(String.fromCharCode(str.charCodeAt(i)-13)); }else{ newarr.push(String.fromCharCode(str.charCodeAt(i)+13)); } } return newarr.join(""); } // Change the inputs below to test rot13("SERR PBQR PNZC");

转载请注明原文地址: https://www.6miu.com/read-76814.html

最新回复(0)