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

来源:互联网 发布:淘宝网毛衣女装张大奕 编辑:程序博客网 时间:2024/06/05 16:08

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


运行结果:


有关数据加密的更多更深的知识,欢迎大家一起讨论分享。

阅读全文
0 0
原创粉丝点击