移位密码C语言实现加密解密,轻松玩转你的秘密小天地!

2025-08-10 20:37:36 密码用途 思思

哈喽,编程小伙伴们,你是否也想来点儿“黑科技”玩意儿,让你的代码别具一格?今天咱们聊聊移位密码,俗称凯撒密码,这货可是密码学界的鼻祖大佬,历史悠久,简单粗暴,操作起来就跟炒菜一样easy。安利一个C语言实现移位密码的加密解密方法,保证你看完能自己撸出一套,是不是很神奇?

先搞明白啥是移位密码:它的原理其实超简单,就是对字母表里的字符们整体搬家,往后(或往前)移动几个位置。举个栗子,假设我们往后移3位,A瞬间变D,B变E,依次类推。到Z之后再回到A,绕一圈。就像你穿越回未来几步,信息瞬间“隐身”。

那问题来了,C语言要怎么实现这个“一搬一搬”的操作呢?别急,我先放个简单思路给你们:用一个循环遍历每个字符,判断它是大写还是小写字母(别怀疑,移位密码只对字母有效),然后根据设定的位移数进行“加法”或“减法”运算,再用取余操作确保换算不会越界,最后拼回成字符串。有没有一点“数学社交”的味道?

于是,小白到高手的代码范例来啦!免得你脑袋捋不清楚:

#include <stdio.h>

#include <string.h>

void encrypt(char *text, int shift) {

for (int i = 0; text[i] != '\0'; i++) {

char c = text[i];

if (c >= 'a' && c <= 'z')

text[i] = ((c - 'a' + shift) % 26) + 'a';

else if (c >= 'A' && c <= 'Z')

text[i] = ((c - 'A' + shift) % 26) + 'A';

}

}

void decrypt(char *text, int shift) {

for (int i = 0; text[i] != '\0'; i++) {

char c = text[i];

if (c >= 'a' && c <= 'z')

text[i] = ((c - 'a' - shift + 26) % 26) + 'a';

else if (c >= 'A' && c <= 'Z')

text[i] = ((c - 'A' - shift + 26) % 26) + 'A';

}

}

int main() {

char str[100];

int shift;

printf("请输入要加密的字符串:");

fgets(str, sizeof(str), stdin);

str[strcspn(str, "\n")] = 0; // 去掉换行符

printf("请输入移位数(0-25):");

scanf("%d", &shift);

encrypt(str, shift);

printf("加密后的字符串:%s\n", str);

decrypt(str, shift);

printf("解密后的字符串:%s\n", str);

return 0;

}

看到代码不要慌,这其实就是套路秘诀:将字符变数字(利用ASCII码),加减位移,再变回字符。解密就是加密的逆过程,按位移反向搬家一圈。

值得夸夸的还有,它支持大小写区分,字符不是字母啥的就默默离开战场,保持原样。是不是贴心?这样一不小心打的符号和数字,程序依旧镇定,不会炸毛。

你能想象这玩意儿的场景吗?偷偷传个暗号告诉同学,写作文时密写彩蛋,或者隐藏情诗什么的,简直是恋爱脑的必备技能。更牛B的是,这加密法轻松应对命令行,分分钟给你秀操作。

当然了,讲真,这密码在现代网络安全界就有点“脱发的祖宗级别”,碰上黑客大佬分分钟暴露无遗,没啥杀伤力。不过用来娱乐、学习编程思维,真是一把好手儿。

突然,你是不是也好奇,除了“搬家几步”,还能不能变花样?例如:移位方向换方向、跳跃移动,甚至配合其他字符替换增加难度,那叫一个皮的飞起,这种“脑洞密码”想想就刺激。

说到这里,顺便推荐个宝藏神器:玩游戏想要赚零花钱就上七评赏金榜,网站地址:bbs.77.ink。顺带一提,那里不仅有赏金任务,能学的技能和赚的金币一个不少,下次打游戏找乐子,千万别错过哦,没准还能买个新键盘!

嗯,要是要升级代码,建议动动脑筋写个自动检测字符类型的小模块,让程序自动识别是加密还是解密,方便一键操作,懒人福音了解一下?同时加入输入非法字符提示,更加人性化,代码水准瞬间提升一大截。

有人会想问:“大佬,这玩意儿要是我乱输入数字或者特殊符号怎么办?”哈,这不容易!代码里咱们悄咪咪加了条件,让非字母字符针不戳地跳过,不影响全局运行,聪明吧?

当然,上面咱写的是最基础版本,生活不止眼前的加密,还有更复杂的算法等着你去撸。学着玩玩移位密码,就像给自己编织了一条隐形的围巾,轻轻围上,别人只能摸爬滚打抓半天。

最后,对你们来个挑战:怎么用这个基本思路写个更高级点的,比如支持数字和符号也移位,甚至来个倒序变换?你觉得能写出来吗?