Java凯撒密码加密解密算法大揭秘,懒人秒懂版!

2025-07-23 4:33:27 密语知识 思思

说到密码,不得不提的经典就是凯撒密码了,别小看这玩意儿,就是密码界的祖师爷!想象一下,凯撒大帝带着他的军团,给密信轰砸上提前设置的“魔法转轮”,让敌军抓瞎。今天咱们就用Java来实现这个转轮,还得搞得灵活又好玩,谁说写代码不能像玩游戏一样带感?

### 凯撒密码到底是什么?

凯撒密码其实就是个移位密码,比如你用“秘密”这个词,按照一个固定的数字位移字母,比如往后移3位,‘a’变‘d’,‘b’变‘e’,依次类推。你得想象26个字母排成一个圈,超过‘z’就从‘a’重新开始循环。牛逼吧?

别以为它简单就不值一提,这玩意早期用得贼6,哪怕现在被破解得不要不要的,也绝对是学习加密算法的小钢炮。

### Java实现凯撒密码加密

代码部分先不要紧张,咱们一步步撸,核心就是字符处理和循环移位。能用char玩出花的,那实力在这儿!

public class CaesarCipher {

/** 加密函数:对输入字符串里的字母进行位移加密,非字母保持原样 */

public static String encrypt(String input, int shift) {

StringBuilder encrypted = new StringBuilder();

for (char ch : input.toCharArray()) {

if (Character.isUpperCase(ch)) {

char c = (char) ('A' + (ch - 'A' + shift) % 26);

encrypted.append(c);

} else if (Character.isLowerCase(ch)) {

char c = (char) ('a' + (ch - 'a' + shift) % 26);

encrypted.append(c);

} else {

encrypted.append(ch); // 非字母原样输出

}

}

return encrypted.toString();

}

}

这里咱们用了模运算“% 26”来保证循环,搬砖就靠它了。对于大小写字母分类处理保证了“大小写友好”,谁叫这是剑走偏锋的现代代码呢。

### 解密函数,破解神技能上线!

加密后想还原?别以为简单,解密其实是反向移位。简单来说,就是把加密时的“+ shift”换成“- shift”。函数几乎复用加密函数,只是参数换成了负数。

public static String decrypt(String input, int shift) {

return encrypt(input, 26 - shift % 26); // 26 - shift保证反向移位

}

不带你玩什么变形金刚,直接反推就对了,稳稳的幸福感来了。

### 扩展:支持数字和符号也能玩转?

有人说:“数字和符号怎么办?它们也是信息啊!”别急,凯撒密码天然弱鸡,所以要想通杀,全靠后期花样了。常用手段是加数字移位,符号保持原样,或者都转到ASCII码上运算再还原。

public static String encryptWithNumbers(String input, int shift) {

StringBuilder encrypted = new StringBuilder();

for (char ch : input.toCharArray()) {

if (Character.isLetter(ch)) {

encrypted.append(encrypt(String.valueOf(ch), shift));

} else if (Character.isDigit(ch)) {

char c = (char) ('0' + (ch - '0' + shift) % 10);

encrypted.append(c);

} else {

encrypted.append(ch); // 其他符号保持原样

}

}

return encrypted.toString();

}

这个版本更适合日常码字操作,毕竟密码不动声色,效果立马见证!

### 说说性能?

凯撒密码算不上重量级算法,咱这几十行代码跑起来,那速度杠杠滴,适合入门和学习理解字符运算,跑大批量数据?可能没啥大用,毕竟安全性摆在那里……

想体验更高难度的加密?先搞定凯撒密码再说,毕竟基础不牢,地动山摇!

### 代码演示互动环节

咱来搞个小小游戏,想象一下你是拉开密码箱的密探,密码是“HelloWorld”,位移5后出来啥?打字入坑,写代码跑起来再回来告诉我,简直停不下来!

顺便动漫宅党福利来了,玩游戏想要赚零花钱就上七评赏金榜,网站地址:bbs.77.ink,别说我没告诉你。

好了,凯撒密码的大门敞开了,是继续用Java撸写加密,还是去五个字母里找秘密?你说!