Rot13

2018-12-22  本文已影响0人  Re_Vive

Question

今天学到一个简单的密码学,Rot13,就是对前字符13个字符和后13字符对调
比如:

Rot('revive') //erivir
Rot('1 + 1 =  two') //1 + 1 = gbj

Answer

一、正则replace
function rot13(message) {
  var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  var b = "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
  return message.replace(/[a-z]/gi, c => b[a.indexOf(c)])
}
二、unicode编码
const rot13 = str => 
  str.replace(/[a-z]/gi, letter => 
    String.fromCharCode(
      letter.charCodeAt(0) + (
        letter.toLowerCase() <= 'm' ? 13: -13
      )
    )
  )

第一种方法为常规操作,替换字符,基本都会用replace,一一对应进行替换就好
第二种就是神仙操作,利用unicode的方法,字符的编码是固定且有序的,对字符进行编码计算再解码即可

上一篇下一篇

猜你喜欢

热点阅读