ROT13密码
2017-01-03 21:49
204 查看
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》
相关文章推荐
- 手机密码知多少??
- 一种不可逆的密码加密与验证方法
- QQ密码
- ASP.NET记住密码
- Oracle修改默认密码过期天数和锁定次数
- android EnMicroMsg.db安卓微信数据库获得密码的源码
- oracle设置登陆密码过期时间
- oracle 密码忘记 找回密码
- SSH KEY免密码验证
- Sqoop密码访问的3种应用场景解读
- 解决 “IntelliJ IDEA 使用SVN版本控制频繁弹出输入 用户名和密码的弹框” 问题
- 微信破解WiFi密码如何操作?一招帮你查看密码!
- [贴]MD5密码算法C程序
- sql2000更改密码的方法
- 虚拟机下安装ubuntu后root密码设置
- linux如何破解root密码
- 织梦如何重置密码(织梦忘记密码)
- 【Vegas原创】outlook连接exchange需要密码的解决方法
- springSecurity 密码md5+salt配置
- 修改Oracle用户密码