Pythonで簡易なシーザー暗号を作成してみましたが、今回はJavascriptで作成してみました。
入力ボックスに文字列を入力して、"Generate"ボタンを押下すると、ずらした文字列がポップアップで表示されます。
"ずらし"の対象は、アルファベットの大文字、小文字、そして0-9までの数字です。それ以外の文字については、無視してそのまま表示されます。
ずらす値は、現在”-1”で固定していますが、そのうちこれも入力ボックスで変更可能にしたいと考えてます。一応、プラスもマイナスも対応可能になっていますが、あまり詳細なテストを行っていないので、間違っていたら指摘して下さい。
<form name="in"> Input string: <input type="text" name="input_box" value="" /> <input type="button" value="Generate" onclick="startCalculate()" /> </form> <script type="text/javascript"> function caesarShift(str, shift){ // Output value var output = ''; if(str == null || str == ""){ return "Input string is empyt or something wrong!" } // Go through each character in this loops for (var i = 0; i < str.length; i ++) { // Get the character var c = str[i]; // If the character is a letter... if (c.match(/[a-z]/i)) { var code = str.charCodeAt(i); // A to Z if ((code >= 65) && (code <= 90)){ var t = code - 65 + shift if (t < 0){ t = 26 - Math.abs(t)%26 } c = String.fromCharCode((t % 26) + 65); } // a to z else if ((code >= 97) && (code <= 122)){ var t = code - 97 + shift if (t < 0){ t = 26 - Math.abs(t)%26 } c = String.fromCharCode((t % 26) + 97); } } // 0 - 9 else if (c.match(/[0-9]/)) { var code = str.charCodeAt(i); var t = code - 48 + shift if (t < 0){ t = 10 - Math.abs(t)%10 } c = String.fromCharCode((t % 10) + 48); } // Append output += c; } // Return the output value! return output; } function startCalculate(){ var str = caesarShift(document.in.input_box.value, -1) alert(str); } </script>
今日はここまで。