JAVA实现caesar凯撒加密算法



public class CaesarCipher {
    // 加密方法
    public static String encrypt(String text, int shift) {
        shift = shift % 26 + 26; // 确保shift为正数
        StringBuilder encrypted = new StringBuilder();
        for (int i = 0; i < text.length(); i++) {
            char ch = text.charAt(i);
            if (Character.isLetter(ch)) {
                // 区分大小写进行加密
                if (Character.isUpperCase(ch)) {
                    ch = (char) (((ch - 'A') + shift) % 26 + 'A');
                } else {
                    ch = (char) (((ch - 'a') + shift) % 26 + 'a');
                }
            }
            encrypted.append(ch);
        }
        return encrypted.toString();
    }

    // 解密方法,实际上和加密方法一样,只是shift取反
    public static String decrypt(String text, int shift) {
        return encrypt(text, 26 - (shift % 26)); // 通过取反shift来实现解密
    }

    public static void main(String[] args) {
        String originalText = "Hello World!";
        int shift = 3; // 向右移动3位
        String encryptedText = encrypt(originalText, shift);
        System.out.println("Encrypted: " + encryptedText);
        String decryptedText = decrypt(encryptedText, shift);
        System.out.println("Decrypted: " + decryptedText);
    }
}

这段代码展示了如何使用Java实现一个简单的凯撒加密算法。它包括了加密(`encrypt`)和解密(`decrypt`)方法,两者都通过修改字符在字母表中的位置来实现。注意,解密方法实际上是通过计算加密时shift的逆操作来完成的,这里利用了模运算的性质来实现。