java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java 恺撒加密解密

java 恺撒加密/解密实现原理(附带源码)

作者:Katie

本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入门案例,感兴趣的朋友一起看看吧

Java 恺撒加密/解密实现

1. 项目背景与介绍

恺撒加密(Caesar Cipher)是最简单、最古老的替换加密算法之一,得名于罗马帝国凯撒大帝,他曾用这种方法来传递军事情报。该加密算法的基本原理是:将明文中的每个字母按照固定的位移量进行替换,生成密文。由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入门案例。

本项目将通过 Java 实现恺撒加密和解密。我们会定义一个固定的位移量,对输入的明文进行加密,将字母按位移后得到新的字符;解密过程则是反向位移,将密文还原为明文。尽管该算法安全性较低,但它能帮助我们理解基本的字符处理和算法实现过程。

2. 相关知识

2.1 恺撒加密算法原理

2.2 Java 字符串与字符操作

3. 项目实现思路

实现恺撒加密/解密的主要步骤如下:

4. 完整代码实现

下面是一份完整的 Java 代码示例,实现了恺撒加密与解密功能。代码中附有详细注释,帮助读者理解每一部分的实现细节。

/**
 * CaesarCipher 类实现了恺撒加密和解密功能。
 * 该程序使用固定的位移量对明文中的字母进行替换,
 * 实现加密和解密操作,同时保持非字母字符不变。
 */
public class CaesarCipher {
    // 定义加密/解密的位移量
    private static final int SHIFT = 3;
    /**
     * 对输入的明文进行恺撒加密
     *
     * @param plainText 明文字符串
     * @return 加密后的密文字符串
     */
    public static String encrypt(String plainText) {
        StringBuilder encrypted = new StringBuilder();
        // 遍历明文中每个字符
        for (int i = 0; i < plainText.length(); i++) {
            char c = plainText.charAt(i);
            // 判断是否为大写字母
            if (c >= 'A' && c <= 'Z') {
                // 计算加密后的字符,并确保循环
                char newChar = (char) (((c - 'A' + SHIFT) % 26) + 'A');
                encrypted.append(newChar);
            }
            // 判断是否为小写字母
            else if (c >= 'a' && c <= 'z') {
                char newChar = (char) (((c - 'a' + SHIFT) % 26) + 'a');
                encrypted.append(newChar);
            } else {
                // 非字母字符保持不变
                encrypted.append(c);
            }
        }
        return encrypted.toString();
    }
    /**
     * 对输入的密文进行恺撒解密
     *
     * @param cipherText 密文字符串
     * @return 解密后的明文字符串
     */
    public static String decrypt(String cipherText) {
        StringBuilder decrypted = new StringBuilder();
        // 遍历密文中每个字符
        for (int i = 0; i < cipherText.length(); i++) {
            char c = cipherText.charAt(i);
            // 判断是否为大写字母
            if (c >= 'A' && c <= 'Z') {
                // 计算解密后的字符,注意处理循环
                char newChar = (char) (((c - 'A' - SHIFT + 26) % 26) + 'A');
                decrypted.append(newChar);
            }
            // 判断是否为小写字母
            else if (c >= 'a' && c <= 'z') {
                char newChar = (char) (((c - 'a' - SHIFT + 26) % 26) + 'a');
                decrypted.append(newChar);
            } else {
                // 非字母字符保持不变
                decrypted.append(c);
            }
        }
        return decrypted.toString();
    }
    /**
     * 主函数,测试恺撒加密和解密功能
     *
     * @param args 命令行参数(未使用)
     */
    public static void main(String[] args) {
        // 定义待加密的明文
        String plainText = "Hello, Caesar Cipher! 123";
        System.out.println("原始明文: " + plainText);
        // 进行加密
        String encryptedText = encrypt(plainText);
        System.out.println("加密后的密文: " + encryptedText);
        // 进行解密
        String decryptedText = decrypt(encryptedText);
        System.out.println("解密后的明文: " + decryptedText);
    }
}

5. 代码解读

5.1 加密方法(encrypt)

5.2 解密方法(decrypt)

5.3 主函数测试

6. 项目总结与展望

本项目展示了如何利用 Java 实现简单的恺撒加密和解密。主要收获与体会包括:

总之,本项目不仅为初学者提供了一个易于理解的加密解密示例,也为进一步探索密码学和数据加密技术奠定了基础。希望这篇博客文章能为你在 Java 加密技术领域提供有价值的参考和启发。

到此这篇关于java 恺撒加密/解密实现(附带源码)的文章就介绍到这了,更多相关java 恺撒加密解密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文