首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

凱撒密碼加解密算法 Java 實現詳解

     編輯:Java 綜合教學

算法原理

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

凱撒密碼示意 程序流程圖

核心邏輯:邊界環繞處理

  • 大寫:'X'(88)→'A'(65)、'Y'→'B'、'Z'→'C'(-23 等價於 +3 取模 26)
  • 小寫:'x'(120)→'a'(97)、'y'→'b'、'z'→'c'
  • 其餘字符:直接 ±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!

加密運行截圖 解密運行截圖

String 常用 API 速查表

方法說明
equals(Object)內容比較
length()字符長度
charAt(int)指定位置字符
toCharArray()轉字符數組
substring(begin, end)截取子串
toUpperCase()/toLowerCase()大小寫轉換
trim()去首尾空白
replace(old, new)字符替換

安全性註記

凱撒密碼屬於極弱加密,僅供教學演示。實際應用請使用 AES、RSA 等現代加密算法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved