黃昏落幕,寂寞上演;芳華似在,心已滄桑
阿新 • • 發佈:2018-12-31
在密碼學中,愷撒密碼是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是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,
請編寫程式碼實現愷撒密碼。
輸入:
偏移量K
待加密的字串
輸出:
加密後的字串。注意只需用對大小寫字母進行變換,其它字元原樣輸出
樣例輸入:
3↵
The□quick□brown□FOX□jumps□over□the□lazy□DOG.↵
A□bird□in□the□hand□is□worth□than□two□in□the□bush.↵
Failure□is□the□mother□of□success.↵
樣例輸出:
Wkh□txlfn□eurzq□ IRA□mxpsv□ryhu□wkh□odcb□GRJ.↵
D□elug□lq□wkh□kdqg□lv□zruwk□wkdq□wzr□lq□wkh□exvk.↵
Idloxuh□lv□wkh□prwkhu□ri□vxffhvv.↵
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.}