1. 程式人生 > >黃昏落幕,寂寞上演;芳華似在,心已滄桑

黃昏落幕,寂寞上演;芳華似在,心已滄桑

在密碼學中,愷撒密碼是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。這個加密方法是以愷撒的名字命名的,當年愷撒曾用此方法與其將軍們進行聯絡。

例如,下面是凱撒密碼的偏移量k=3的情況

初始字母順序:  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
凱撒變換後 :  D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

這樣,訊息"VENI, VIDI, VICI"(著名的愷撒語錄:拉丁語,意思"I came,

I saw, I conquered",中文譯為“我來了,我看見了,我征服了”),就將被加密為"YHQL, YLGL, YLFL"。

請編寫程式碼實現愷撒密碼。

輸入:

偏移量K

待加密的字串

輸出:

加密後的字串。注意只需用對大小寫字母進行變換,其它字元原樣輸出

樣例輸入:

3

ThequickbrownFOXjumpsoverthelazyDOG.

Abirdinthehandisworththantwointhebush.

Failureisthemotherofsuccess.

樣例輸出:

Wkhtxlfneurzq

IRAmxpsvryhuwkhodcbGRJ.

Deluglqwkhkdqglvzruwkwkdqwzrlqwkhexvk.

Idloxuhlvwkhprwkhurivxffhvv.

01.import java.util.Scanner;  
02./* 
03. * 愷撒密碼 
04. */  
05.public class Main {  
06.    public static void main(String[] args)throws Exception {  
07.        Scanner cin = new Scanner(System.in);  
08.        //定義偏移量  
09.        int k = cin.nextInt();  
10.        //輸入要加密的內容  
11.        String insertStr = cin.nextLine();  
12.        //呼叫加密處理方法  
13.        while(cin.hasNext()){  
14.            insertStr = cin.nextLine();   
15.            deal(insertStr,k);  
16.        }  
17.    }  
18.    //根據偏移量k處理字元  
19.    private static void deal(String text,int k){  
20.        //在錄入的字元轉換為字元陣列  
21.        char [] dealStr = text.toCharArray();  
22.        for(int i=0;i<dealStr.length;i++){  
23.          //如果為小寫字母時      
24.          if(dealStr[i]>='a' && dealStr[i]<='z'){  
25.              //根據字元acsi表編碼序號  
26.              dealStr[i]=(char)(((int)dealStr[i] + k - (int)'a')%26 + (int)'a');  
27.          //如果為大寫字母時            
28.          }else if(dealStr[i]>='A' && dealStr[i]<='Z'){  
29.              //根據字元acsi表編碼序號  
30.              dealStr[i]=(char)(((int)dealStr[i] + k - (int)'A')%26 + (int)'A');  
31.          }  
32.        }  
33.        //輸出加密後字元  
34.        System.out.println(dealStr);  
35.        //退出程式  
36.        System.exit(0);  
37.    }   
38.}