您的位置:首页 > 运维架构 > Linux

简单LinuxC程序关于加密(将任意长字符转换为定长整数)

2017-08-14 10:50 411 查看
本程序功能是将任意长字符串转换为定长(16位)整数,这是一个不可逆的过程,所以可以用来给数据加密。以下是我具体实现的代码。

源代码:

#include <stdio.h>
#include <string.h>
#define SIZE 1024
#define LEN 16

//原始码转换函数
int add(int pwdnum)
{
while(pwdnum >= 10) //得到个位数的最终码
{
int tmp = pwdnum;
pwdnum = 0;
while(tmp) //每一位数字相加
{
pwdnum += tmp%10;
tmp = tmp/10;
}
}
return pwdnum; //返回最终码
}

//分组相加函数,分16组,得到16个原始码
int encrypt(char *str,char *pwd,int len)
{
if(str == NULL)
{
return -1;
}
int k = len/LEN + 1;
int i,j;
int pwdtmp[LEN] = {0};//16个原始码
for (i = 0;i < LEN;i++)
{
for (j = 0;j < k;j++)
{
pwdtmp[i] += str[i+LEN*j]; //每组对应位置的数相加得到原始码
}
}
for (i = 0;i < LEN;i++)
{
pwd[i] = add(pwdtmp[i]) + '0'; //将原始码转换为个位数,再转变为对应字符
}
return 0;
}

int main()
{
char str[SIZE] = {0}; //原始字符串
char pwd[LEN+1] = {0}; //加密16位数字
printf ("请输入一个字符串\n");
scanf("%s",str);
int len = strlen(str);
encrypt(str,pwd,len);
printf ("pwd = %s\n",pwd);

return 0;
}

运行结果:



有关数据加密的更多更深的知识,欢迎大家一起讨论分享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐