本程序功能是将任意长字符串转换为定长(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])