凱撒密碼屬於替換加密,將字母表向後/前固定位移(如 +3)。經典版本僅處理英文字母,保持大小寫,非字母字符不變。

public class CaesarCipher {
private static final int SHIFT = 3;
public static char[] encrypt(String str) {
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
char c = arr[i];
if (c >= 'X' && c <= 'Z') arr[i] = (char) (c - 23);
else if (c >= 'x' && c <= 'z') arr[i] = (char) (c - 23);
else if (Character.isLetter(c)) arr[i] = (char) (c + SHIFT);
}
return arr;
}
public static char[] decrypt(String str) {
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
char c = arr[i];
if (c >= 'A' && c <= 'C') arr[i] = (char) (c + 23);
else if (c >= 'a' && c <= 'c') arr[i] = (char) (c + 23);
else if (Character.isLetter(c)) arr[i] = (char) (c - SHIFT);
}
return arr;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("1.加密 2.解密");
int mode = in.nextInt(); in.nextLine(); // 消費換行
System.out.print("輸入字符串:");
String s = in.nextLine();
char[] res = (mode == 1) ? encrypt(s) : decrypt(s);
System.out.println("結果:" + new String(res));
in.close();
}
}
輸入:Hello World!
加密:Khoor Zruog!
解密:Hello World!

| 方法 | 說明 |
|---|---|
equals(Object) | 內容比較 |
length() | 字符長度 |
charAt(int) | 指定位置字符 |
toCharArray() | 轉字符數組 |
substring(begin, end) | 截取子串 |
toUpperCase()/toLowerCase() | 大小寫轉換 |
trim() | 去首尾空白 |
replace(old, new) | 字符替換 |
凱撒密碼屬於極弱加密,僅供教學演示。實際應用請使用 AES、RSA 等現代加密算法。