C语言字符串加密和解密算法
在本实例中要求设计一个加密和解密算法。在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。加密的方式是将字符串中每个字符加上它在字符串中的位置和一个偏移值 5。以字符串“mrsoft”为例,第一个字符“m”在字符串中的位置为 0,那么它对应的密文是“'m'+0+5",即 r。
算法思想
在 main() 函数中使用 while 语句设计一个无限循环,并定义两个字符数组,用来保存,明文和密文字符串,在首次循环中要求用户输入字符串,进行将明文加密成密文的操作, 之后的操作则是根据用户输入的命令字符进行判断,输入 1 加密新的明文,输入 2 对刚加密的密文进行解密,输入 3 退出系统。
程序代码
#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退出系统:
请输入命令符:
总结
字符串的加密和解密方法一直被广泛应用,最常见的无非是 MD5 散列函数。本实例中的算法比较简单,只是在原值基础上相加对应值即可。MD5 略微复杂,是为了确保信息传输完整、一致而设计的杂凑算法之一,是杂凑算法的基本原理。
- C语言输出等腰三角形
- 本实例要求从键盘输入任意整数 n,通过程序运行输出对应高度为 n 的等腰三角形。
- 03-10 关注:0
- C语言字符串加密和解密算法
- 在本实例中要求设计一个加密和解密算法。在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。
- 03-09 关注:3
- C语言统计单词个数,单词个数算法
- 在实际生活中经常会遇到一个问题:写英语作文时,常常要求满足一定的字数。在以往,要么我们一个一个地数;要么我们估算一行的单词数,
- 03-09 关注:3
- C语言获取矩阵的最大值及其下标
- 本实例要求使用二维数组将一个 3×4 的矩阵中所有元素的最大值及其下标获取,通过该程序,掌握二维数组的引用知识。
- 03-09 关注:4
- C语言谁家孩子跑得最慢
- 张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得 9 分,跑第二得 8 分,依次类推。
- 03-09 关注:3
- C语言狼追兔子问题
- 一只兔子躲进了 10 个环形分布的洞的某一个,狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找
- 03-09 关注:2
- C语言兔子生兔子问题
- 假设一对兔子的成熟期是一个月,即一个月可长成成兔,那么,如果每对成兔每个月都生一对小兔
- 03-09 关注:4
- C语言矩阵转置
- 本实例是利用数组解决线性代数中的矩阵转置问题。
- 03-09 关注:3