简单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;
}
运行结果:
![](https://img-blog.csdn.net/20170814104944315?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbTBfMzgwMDE3ODM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
有关数据加密的更多更深的知识,欢迎大家一起讨论分享。
源代码:
#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;
}
运行结果:
有关数据加密的更多更深的知识,欢迎大家一起讨论分享。
相关文章推荐
- 简单LinuxC程序关于加密(将任意长字符转换为定长整数)
- 用shell编写的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 用shell编写的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量
- 任意格式的日期字符转换为linux
- 一个简单的关于字符串识别与转换的程序
- 简单LinuxC程序关于统计0~n有多少个0~9(main函数的参数)
- 简单LinuxC程序关于简单计算器(函数指针与回调函数)
- 一个简单的关于去掉出现重复字符的程序
- 看!我写的关于“简单异或”加密的破解分析演示程序!
- 简单LinuxC程序关于倒置句子中的单词位置(指针的使用)
- 二进制与任意字符转换程序代码
- 简单LinuxC程序关于任意长整数相加(字符串实现)
- 关于VS2017编译linux程序时,错误提示信息太简单,看不出错误原因的解决办法
- 关于把字符串整数转换成整数的程序
- Linux下简单加密程序实现
- 简单LinuxC程序关于报数问题
- 关于把字符串整数转换成整数的程序
- 关于int整数转换存储到字符数组
- C++实现文件简单加密与解密(读取文件中的字符,对字符转换,然后写入,完成加密,解密反之)