ROT13密码

原创 2017年01月03日 21:49:02

ROT13密码

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

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

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

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

分析:大写字母"A"的unicode码为65,同理“Z”—— 90,“M”—— 77。

          任何非字母形式的字符,不需要转换,直接存入数组

          后13个大写字母,其unicode码减去13后通过String.fromCharCode()转换后,存入数组中

          前13个大写字母,其unicode码加上13后通过String.fromCharCode()转换后,存入数组中

          最后将数组转换成字符串即可

        String.fromCharCode() 静态方法根据指定的 Unicode 编码中的序号值来返回一个字符串。

        String.charCodeAt() 方法返回0到65535之间的整数,代表索引处字符的UTF-16编码单元(在Unicode编码单元表示一个单一的UTF-16编码单元的情况下,UTF-16编码单元匹配Unicode编码单元。

       function rot13(str) { 
         var newarr = [];
         for(var i = 0; i < str.length; i ++){
           if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 90){
             newarr.push(str.charAt(i));
             // 非字母形式的字符,直接跳过,存入数组newarr中
           }
          else if(str.charCodeAt(i) > 77){
            newarr.push(String.fromCharCode(str.charCodeAt(i) - 13));
            // 77 —— 第13个大写字母“M”
            // 后13个大写字母,减去13
          }else{
            newarr.push(String.fromCharCode(str.charCodeAt(i) + 13));
            // 前13个大写字母,加上13 
          }
        }
        return newarr.join("");
     }
     rot13("SERR PBQR PNZC");

                                                                                                                                            ——FreeCodeCamp269《Caesars Cipher》


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

win7下libevent实现的rot13服务器

// libev_rot13.cpp : Defines the entry point for the console application. // #include "stdafx.h" #...

ROT13加密和解密

问题ROT13(回转13位)是一种简易的替换式密码算法。它是一种在英文网络论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13 也是过去在古罗马开发的凯撒密...

ROT13函数

本来不想写那种记录的东西,我会觉得很反感,今天一定要写一些,做了一下午,就因为一些小小的Rot13函数的编写,还给提供了方法,我真的是没救了,最后字符串的标点符号竟然把我难住了,我真的是蠢死了!!! ...

ROT-13

ROT13(回转13位,rotateby13places,有时中间加了个减号称作ROT-13)是一种简易的置换暗码。 它是一种在网路论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主...

Go指南练习之《rot13Reader》

Go官网指南 练习原文 一个常见模式是 io.Reader 包裹另一个 io.Reader,然后通过某种形式修改数据流。 例如,gzip.NewReader 函数接受 io.Reader...

个性化编译openwrt(编译前更改lan.ipaddr,ssid,timezone,root密码 增加13信道)

编译OpenWrt之前 编辑 .config文件 搜索 “CONFIG_ATH_USER_REGD” 字符串 搜索到后把前面的 "#" 删掉 改成 CONFIG_ATH_USER_REGD=y 然...

密码学历史(The History of Cryptography)(13)

数据加密标准Data Encryption Standard (DES) 1977年数据加密标准 (DES) 由国家标准局(National Bureau of Standards,NBS)发布...

华为机试在线训练-牛客网(13)简单密码

题目描述 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。   假设渊子原来一个BBS上的密...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)