介绍
使用C语言怎么实现一个加密解密功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强>加密算法:强>
大(小)写字母加密后还为大(小)写字母。大(小)写字母向后推n位,n由用户输入,如果超出大(小)写字母的ASCII范围,则返回至第一个大(小)写字母继续循环。
<强>解密算法(与加密算法正好相反):强>
大(小)写字母解密后还为大(小)写字母。大(小)写字母向前推n位,n由用户输入,如果超出大(小)写字母的ASCII范围,则返回至最后一个大(小)写字母继续循环。
代码如下:
/*字符串加密解密程序,凯撒加密*/# include & lt; stdio.h> # include & lt; stdlib.h> # include & lt; string.h> ,//函数编码()将字母顺序推后n位,实现文件加密功能 void 编码(char str [], int n) { ,char c; ,int 我; ,(i=0; i< strlen (str); + + i){,//遍历字符串 ,c=str(我); ,如果(c>=& # 39;一个# 39;,,,,c<=& # 39; z # 39;) {,//c是小写字母 如果才能(c + n % 26 & lt;=& # 39; z # 39;){,//若加密后不超出小写字母范围 str才能[我]=(char) (c + n % 26),,//加密函数 ,,其他}{//加密后超出小写字母范围,从头开始循环小写字母 str才能[我]=(char) (c + n % 26-26); ,,} ,}else 如果(c>=& # 39;一个# 39;,,,,c<=& # 39; z # 39;) {,//c为大写字母 如果才能(c +, n % 26, & lt;=, & # 39; z # 39;){,//加密后不超出大写字母范围 str才能[我]=(char) (c + n % 26); ,,其他}{//加密后超出大写字母范围,从头开始循环大写字母 str才能[我]=(char) (c + n % 26-26); ,,} ,其他}{//不是字母,不加密 str才能[我]=c; ,} ,} ,printf (“\ nAfter 编码:\ n"); ,把(str);//输出加密后的字符串 } , ,//解码()实现解密功能,将字母顺序前移n位 void 解码(char str [], int n) { ,char c; ,int 我; ,//遍历字符串 ,(i=0; i< strlen (str); + + i) { ,c=str(我); ,//c为小写字母 ,如果(c>=& # 39;一个# 39;,,,,c<=& # 39; z # 39;) {//解才能密后还为小写字母,直接解密 如果才能(碳氮% 26祝辞=& # 39;一个# 39;){ str才能[我]=(char)(碳氮% 26); }{其他才能//解才能密后不为小写字母了,通过循环小写字母处理为小写字母 str才能[我]=(char)(碳氮% 26 + 26); ,,} ,}else 如果(c 祝辞=,& # 39;一个# 39;,,,,c<=& # 39; z # 39;) {,//c为大写字母 如果才能(碳氮% 26祝辞=& # 39;一个# 39;){,//解密后还为大写字母 str才能[我]=(char)(碳氮% 26); ,,其他}{//解密后不为大写字母了,循环大写字母,处理为大写字母 str才能[我]=(char)(碳氮% 26 + 26); ,,} ,其他}{//非字母不处理 str才能[我]=c; ,} ,} ,printf (“\ nAfter 解码:\ n"); ,把(str);//输出解密后的字符串 }//该函数代码有冗余,读者可改进 , int main () { ,char str [50]; ,int k=0, n=0, i=1; ,printf (“\ nPlease  input 字符串:,“); ,scanf (“% s", str);,//输入加密解密字符串 ,//打印菜单 ,printf (“- - - - - - - - - - - - - - - - - - \ n"); ,printf(“1:,加密\ n"); ,printf(“2:,解密\ n"); ,printf (“3:, Violent 裂纹\ n");,//暴力破解 ,printf (“- - - - - - - - - - - - - - - - - - \ n"); ,printf (“\ nPlease 选择:“); ,scanf (“% d",和k); ,如果(k==1){,//加密 ,printf (“\ nPlease  input 号码:,“); ,scanf (“% d",, n); ,编码(str, n); ,}else 如果(k==2){,//解密 ,printf (“\ nPlease  input 号码:,“); ,scanf (“% d",, n); ,解码(str, n); ,其他}{ ,(i=1; i<=25; + + i){,//尝试所有可能的n值进行暴力破解 ,,printf (“% d “我); 解码才能(str,我); ,} ,} ,return 0; }
测试运行如下:
关于使用C语言怎么实现一个加密解密功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。