转自 :http://blog.csdn.net/m0_38001783/article/details/77150527
本程序功能是将任意长字符串转换为定长(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;
- }
-
-
- 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};
- 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};
- printf ("请输入一个字符串\n");
- scanf("%s",str);
- int len = strlen(str);
- encrypt(str,pwd,len);
- printf ("pwd = %s\n",pwd);
-
- return 0;
- }