Java シーザー暗号(カエサル暗号・ROT13)

1 min 84 views

シーザー暗号とは?

各文字を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」に「暗号化テストを実施します。」を指定した場合、以下の結果になります。

元のデータ:暗号化テストを実施します。
暗号化後データ:?叺匙ドゼニ?客?ずめぜ々
複合化後データ:暗号化テストを実施します。
さすけ

さすけ

インフラエンジニアとして数々の大手サーバーを構築を実施し、現在はWebサーバーの構築、サイト作成を中心に活躍しています。

FOLLOW

カテゴリー:
関連記事