这个加密算法是一个简单,适合于c语言新手的算法。
算法可以加密任何符号,包括汉字,空格
目录
1.加密原理
其实很简单,众所周知每一个字符都有一个其所对应的ASCII码,所以只需要将要加密的文本转化为一串ASCII码,然后对这一串数据进行操作即可,这里用的是rand函数。当然我们可以用time函数让每次的随机数不一样。
2.加密代码实现
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
long miwen = time(0);//生成种子即密匙
int jiami(long *wenben,int shu)//加密函数
{
srand(miwen);
int mijia[99], i;
for (i = 0; i <= 98; i++)
{
mijia[i] = rand() % 21;//生成随机数组
}
for (i = 0; i <= shu-2; i++)
{
wenben[i] = wenben[i] + mijia[i];//加密
}
return 0;
}
int main()
{
char wenben[99];
int i = 0,j=0,aa=1;
for (j = 0; j < 99; j++)// 文本初始化
{
wenben[j] = '|';
}
j = 0;
long wenbenbian[99] = {0};//密文初始化
printf("即将加密的文本:");
do //接收文本
{
wenben[i] = getchar();
putchar(wenben[i]);
i++;
} while (wenben[i-1]!='\n');
i = 0;
do //转化文本为密文
{
wenbenbian[i]=wenben[i];
i++;
} while (i!=98);
printf("\n");
i = 0;
do //分析文本数量
{
if (wenbenbian[i] == '|')
{
j = i-1;
aa = 0;
}
i++;
} while (aa);
jiami(wenbenbian, j);//加密
printf("\n");
printf("密匙:%ld\n", miwen);
i = 0;
printf("密文:");
do
{
printf("%ld",wenbenbian[i]);
printf(" ");
i++;
} while (i!=j);
while (1);
}
3.解密原理
其实就是加密的逆运算,不过有个处理密文的过程。
4.解密代码实现
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,j=0,aa=1;
long mishi;
char wenben[99], wenben2[99];
int wenben1[99] = {0}; //初始化密文
for (i = 0; i < 99; i++) //初始化文本
{
wenben2[i] = ' ';
}
i = 0;
printf("输入密文:");
do // 提取密文
{
wenben[i] = getchar();
putchar(wenben[i]);
if (wenben[i] == ' '|| wenben[i] == '\n')
{
if (wenben[i] == '\n')
{
aa = 0;
}
wenben1[j] = atoi(wenben);
j++;
i = -1;
}
i++;
} while (aa);
printf("\n");
printf("输入密匙:");
scanf_s("%ld",&mishi);
srand(mishi); //种子即密匙
int mijia[99];
for (i = 0; i <= 98; i++)
{
mijia[i] = rand() % 21;
}
for (i = 0; i <= j-2; i++) //解密
{
wenben1[i] = wenben1[i] - mijia[i];
}
for (i = 0; i <= j; i++)
{
wenben2[i] = wenben1[i];
}
printf("文本:%s", wenben2);
while (1);
}
5.总结
这只是一个适合初学者的小程序,可以作为无聊时的解闷,实用性可能是有点的,不过加密量和效率都很低。