シーザー暗号とは?
各文字を3文字だけシフトして作る暗号文です。
なお、カエサル暗号と呼ばれる事もあります。
(基本的には3文字ですが、3文字で無い場合もあり、13文字シフトさせた場合を「ROT13」といいます。)
暗号化強度はかなり弱い為、システム等に使われませんが簡単なゲームや、ちょっとした情報を分かりにくくするなどに使われます。
Javaでの実装例
Javaでシーザー暗号を実装した例が以下のソースです。
public class sample { public static void main(String[] args) { String text = "abc"; //暗号化する文字 String data1 = ""; //暗号化後データ格納 String data2 = ""; //複合化後データ格納 char no = 3; //ずらす文字数(ROT13の場合は、13に) //暗号化(noで指定文字数プラスする) for(int i=0; ilt;text.length(); i++){ data1 = data1 + String.valueOf((char)(text.charAt(i) + no)); } //複合化(noで指定文字数マイナスする[元に戻す]) for(int i=0; ilt;text.length(); i++){ data2 = data2 + String.valueOf((char)(data1.charAt(i) - no)); } System.out.println("元のデータ:" + text); System.out.println("暗号化後データ:" +data1); System.out.println("複合化後データ:" +data2); } }
実行結果
元のデータ:abc 暗号化後データ:def 複合化後データ:abc
文字コードをシフトしているので、日本語でも動作します。
暗号化する文字「text」に「暗号化テストを実施します。」を指定した場合、以下の結果になります。
元のデータ:暗号化テストを実施します。 暗号化後データ:?叺匙ドゼニ?客?ずめぜ々 複合化後データ:暗号化テストを実施します。