TOP > Java>

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

シーザー暗号とは?
各文字を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; i<text.length(); i++){
         data1 = data1 + String.valueOf((char)(text.charAt(i) + no));
      }
      //複合化(noで指定文字数マイナスする[元に戻す])
      for(int i=0; i<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」に「暗号化テストを実施します。」を指定した場合、以下の結果になります。
■実行結果
元のデータ:暗号化テストを実施します。
暗号化後データ:?叺匙ドゼニ?客?ずめぜ々
複合化後データ:暗号化テストを実施します。
最近の記事
当サイトについて  免責事項  プライバシーポリシー
Copyright (C) Sasuke 2012 All rights reserved.