使用C语言怎么实现一个加密解密功能

  介绍

使用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语言怎么实现一个加密解密功能

关于使用C语言怎么实现一个加密解密功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

使用C语言怎么实现一个加密解密功能