在本实例中要求设计一个加密和解密算法。在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。加密的方式是将字符串中每个字符加上它在字符串中的位置和一个偏移值 5。以字符串“mrsoft”为例,第一个字符“m”在字符串中的位置为 0,那么它对应的密文是“'m'+0+5",即 r。
算法思想
在 main() 函数中使用 while 语句设计一个无限循环,并定义两个字符数组,用来保存,明文和密文字符串,在首次循环中要求用户输入字符串,进行将明文加密成密文的操作, 之后的操作则是根据用户输入的命令字符进行判断,输入 1 加密新的明文,输入 2 对刚加密的密文进行解密,输入 3 退出系统。程序代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include <stdio.h> #include <string.h> int main() { int result=1; int i; int count=0; char Text[128]={ '\0' }; char cryptograph[128]={ '\0' }; while (1) { if (result==1) { printf ( "请输入要加密的明文:\n" ); scanf ( "%s" ,&Text); count= strlen (Text); for (i=0;i<count;i++) { cryptograph[i]=Text[i]+i+5; } cryptograph[i]= '\0' ; printf ( "加密后的密文是:%s\n" ,cryptograph); } else if (result==2) { count= strlen (Text); for (i=0;i<count;i++) { Text[i]=cryptograph[i]-i-5; } Text[i]= '\0' ; printf ( "解密后的明文是:%s\n" ,Text); } else if (result==3) { break ; } else { printf ( "请输入正确的命令符:\n" ); } printf ( "输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:\n" ); printf ( "请输入命令符:\n" ); scanf ( "%d" ,&result); } return 0; } |
调试运行结果
本实例中,输入了 I love Xichang College 字符串作为例证,因此输出是多个加密后的字符串,结果如下所示:请输入要加密的明文:
I Love Xichang College
加密后的密文是:N
输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:
请输入命令符:
请输入要加密的明文:
加密后的密文是:Qu}m
输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:
请输入命令符:
请输入要加密的明文:
加密后的密文是:]ojpjxr
输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:
请输入命令符:
请输入要加密的明文:
加密后的密文是:Hustnqp
输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:
请输入命令符: