下面我們來介紹著名的凱撒密碼Caesar cipher
稽穆,又叫移位密碼。
移位密碼也就是密碼中的字母會按照指定的數(shù)量來做移位。
一個常見的案例就是ROT13密碼登颓,字母會移位13個位置。由'A' ? 'N', 'B' ?'O'红氯,以此類推框咙。
寫一個ROT13函數(shù),實(shí)現(xiàn)輸入加密字符串脖隶,輸出解密字符串扁耐。
所有的字母都是大寫,不要轉(zhuǎn)化任何非字母形式的字符(例如:空格产阱,標(biāo)點(diǎn)符號)婉称,遇到這些特殊字符,就跳過它們。
//加密+解密
function rot13(str) {
// LBH QVQ VG!
var charCodeForA='AZ'.charCodeAt(0);
var charCodeForZ='AZ'.charCodeAt(1);
var sArr=str.split('');
var result='';
for(var i=0;i<sArr.length;i++){
sArr[i]=sArr[i].charCodeAt(0);
if(sArr[i]>=charCodeForA&&sArr[i]<=charCodeForZ)
{
var tempCharCode=sArr[i]+13;
if(tempCharCode>charCodeForZ){
tempCharCode=charCodeForA+(tempCharCode-charCodeForZ)-1;
}
sArr[i]=tempCharCode;
}
result+=String.fromCharCode(sArr[i]);
}
return result;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");
rot13("SERR PBQR PNZC") 應(yīng)該解碼為 "FREE CODE CAMP"
rot13("SERR CVMMN!") 應(yīng)該解碼為 "FREE PIZZA!"
rot13("SERR YBIR?") 應(yīng)該解碼為 "FREE LOVE?"
rot13("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.") 應(yīng)該解碼為 "THE QUICK BROWN DOG JUMPED OVER THE LAZY FOX."