C语言加密和解密算法
简介:字符串的加密和解密方法一直被广泛应用,最常见的无非是 MD5 散列函数(MD5是信息摘要的一种,可以从任意长度的字符串生成128位的哈希值)。
先来看代码:(注意作者代码中的n全部都是自己可调控变量,自己取值即可)具体内容注释解释的很全面(码字不易)*
#include <stdio.h>
#include <string.h>
int main()
{
int choose=1;//初始进入值为以便输入
int i;
int count=0;//后面用strlen统计字符串长度
char text[128]={'\0'};//密码的初值,这里随便打关于是补码最大值-128 ~ +127
char Plaintext[128]={'\0'};//存储加密后密码的数组是因为有
while(1)
{
if(choose==1)
{
printf("输入要加密的内容:\n");
scanf ("%s",&text);//输入字符串
count=strlen(text);//统计字符串长度以便后面循环用
for(i=0;i<count;i++)
{
Plaintext[i]=text[i]+i+n;//开始对密码进行加密这里设置的偏移量n自己设置移动量
//不过平常这里的n都是通过随机函数来进行赋值的这里不进行多余解释
}
Plaintext[i]='\0';//加密新的明文到\0
printf("加密后的是:%s\n",Plaintext);
}
else if(choose==2)//第二个是解密明文
{
count=strlen(text);
for(i=0;i<count;i++)
{
text[i]=Plaintext[i]-i-n;//把原数减回来,得到初始密码
}
text[i]='\0';
printf("解密后:%s\n",text);
}
else if(choose==3)//这里是用做退出
{
break;
}
printf("请输入数字1,2,3功能按键:\n");
scanf("%d",&choose);//通过输入2 3来进行菜单选择
}
return 0;
}
最后我们简单来说一下算法思想:使用 while 语句弄个一个无限循环,定义两个字符组,用来存储明文和加密后的字符串,然后通过偏移量来进行加密和解密,每当加密或者解密完之后,为了不让程序一直循环下去我们设置了一个3也就是一个break语句来退出循环变量从而完成程序。