- 在密码学中,恺撒密码是一种最简单并且最广为人知的加密技术。
- 它是一种替换加密的技术,明文中的所欲字母都在字母表上向后(或向前)按照一个固定的数目进行偏移后被替换成密文。
- 例如:当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
- 这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
- 恺撒密码通常被座位其他更复杂的加密方法中的一个步骤。

public class KaisaUtil { /*** * 使用凯撒加密方式加密数据 * @param orignal 原文 * @param key 密钥 * @return 加密后的字符 */ private static String encryptKaisa(String orignal, int key) { //将字符串转换为数组 char[] chars = orignal.toCharArray(); StringBuffer buffer = new StringBuffer(); //遍历数组 for(char aChar : chars) { //获取字符的ASCII编码 int asciiCode = aChar; //偏移数据 asciiCode += key; //将偏移后的数据转为字符 char result = (char)asciiCode; //拼接数据 buffer.append(result); } return buffer.toString(); } /** * 使用凯撒加密方式解密数据 * * @param encryptedData :密文 * @param key :密钥 * @return : 源数据 */ private static String decryptKaiser(String encryptedData, int key) { // 将字符串转为字符数组 char[] chars = encryptedData.toCharArray(); StringBuilder sb = new StringBuilder(); // 遍历数组 for (char aChar : chars) { // 获取字符的ASCII编码 int asciiCode = aChar; // 偏移数据 asciiCode -= key; // 将偏移后的数据转为字符 char result = (char) asciiCode; // 拼接数据 sb.append(result); } return sb.toString(); } public static void main(String[] args) { String str = "open fire"; String encode = encryptKaisa(str, 3); System.out.println("加密后:"+encode); String decode = decryptKaiser(encode, 3); System.out.println("解密后:"+decode); }}