1. 程式人生 > >java小專案,凱撒加密與解密的實現

java小專案,凱撒加密與解密的實現

開發基於控制檯的凱撒加密系統
-->凱撒加密法,就是將字母表中的每個字母向後移動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();
	}
}

執行效果如圖: