java小專案,凱撒加密與解密的實現
阿新 • • 發佈:2019-02-01
開發基於控制檯的凱撒加密系統
-->凱撒加密法,就是將字母表中的每個字母向後移動2位,比如a被替換成d,b被替換成f,依次類推。字母表的最對於後三位xyz,會被替換為abc。對於拉丁字母之外的其他字元,一律不加密。
執行效果如圖:
-->凱撒加密法,就是將字母表中的每個字母向後移動2位,比如a被替換成d,b被替換成f,依次類推。字母表的最對於後三位xyz,會被替換為abc。對於拉丁字母之外的其他字元,一律不加密。
//這裡只考慮了小寫字母的加密演算法,其他情況請讀者自行新增
import java.util.Scanner; public class KaiSaJiaMi { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out .println("***********************歡迎使用凱撒加密器***********************"); System.out.println(); System.out.print("請選擇操作(1.加密、2.解密):"); int index = sc.nextInt(); if (1 == index) {// 加密 System.out.print("請輸入待加密的字串:"); String str = sc.next(); StringBuffer newStr = new StringBuffer();// 儲存加密後的字串 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); switch (c) { case 'x': newStr.append('a'); break; case 'y': newStr.append('b'); break; case 'z': newStr.append('c'); break; default: if (!(c >= 'a' && c <= 'w')) {// 其中有一些非字母,則直接輸出 newStr.append(c); continue; } char newChar = (char) (c + 3);// 加密演算法,每個字元後移三位 newStr.append(newChar); } } System.out.println("加密後的字串是:" + newStr.toString()); } else if (2 == index) {// 解密 System.out.print("請輸入待解密的字串:"); String str = sc.next(); char[] arr = str.toCharArray();// 將待解密的字串轉換為字元陣列 for (int i = 0; i < arr.length; i++) { switch (arr[i]) { case 'a': arr[i] = 'x'; break; case 'b': arr[i] = 'y'; break; case 'c': arr[i] = 'z'; break; default: if (!(arr[i] >= 'd' && arr[i] <= 'z')) {// 其中有一些標點符號,則直接輸出 continue; } arr[i] -= 3; } } System.out.print("解密後的字串是:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); } } else { System.out.println("sorry,請輸入1或2"); } sc.close(); } }
執行效果如圖: