论文部分内容阅读
摘要:该文简单介绍了加密的概念以及常用的加密技术,并用一个C语言程序实现了文件加密。
关键词:数据加密;C语言
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)12-2730-02
1 概述
随着网络技术的发展,网络安全也就成为当今网络社会焦点中的焦点。由于某些特殊的需要,一些敏感数据或者是保密性文件需要在网上供多人共享,电子商务、电子邮件等等,都对数据的保密要求比较高。由此,对文件进行加密就显得尤为重要。
2 什么是加密
加密就是对原来我们能够直接阅读理解的数据内容(明文)按某种特殊的算法进行处理,使其成为不可读的一段代码,通常称为“密文”。如果我们需要再次使用这些密文,必须输入相应的密钥,使密文转换为明文。通过这样的加密,可以达到保护数据不被人非法窃取、阅读的目的。常用的加密算法有置换表算法、对称密钥加密算法、基于公钥的加密算法等。
3 用C语言实现文件加密
给文件加密的算法根据加密需求的不同而分为不同的等级,该文算法能对任意一个文件进行加密,密码要求用户输入,限8位以内。
程序使用pswfile()函数实现加密,算法利用fgetc()函数和fputc()函数从文件中逐字节读取和存储数据,将读取的字节码与密钥进行异或操作,从而隐藏字节码的信息。然后,程序将异或后的字节码所对应的字符输出到目标文件中。
程序的主要代码如下:
#include
#include
#include
#include
.
void pswfile(char *inname,char *psw,char *outname);/* 函数声明*/
void main(int argc,char *argv[])
{
char inname[30];
char outname[30];
char psw[8];
if(argc!=4){ /* 容错处理*/
printf(“请输入需要加密的文件名\n”);
gets(inname);
printf(“请输入密码:\n”);
gets(psw); /* 输入密码 */
printf(psw);
printf(“请输入输出的文件名\n”);
gets(outname); /* 加密后的文件名*/
pswfile(inname,psw,outname); }
else {
strcpy(inname,argv[1]);
strcpy(psw,argv[2]);
strcpy(outname(argv[3]);
pswfile(inname,psw,outname);
}}
void pswfile(char *inname,char *psw,char *outname)
{FILE *fp1,*fp2;
char ch;
int i=0,j=0;
fp1=fopen(inname,”rb”); /*以二进制只读方式打开要加密的文件*/
if(fp1=NULL){
printf(“该文件不能打开或者不存在\n”);
exit(1); /* 如果不能打开,则退出程序 */
}
fp2=fopen(outname,”wb”);
if(fp2=NULL){
printf(“该文件不能打开或者创建给文件\n”);
exit(1); /* 如果不能加密,退出程序 */
}
while(psw[ j]);
ch=fgetc(fp1);
while(!feof(fp1)){
fputc(ch^psw[i>=j?i=0;i ],fp2); /*异或后写入文件*/
ch=fgetc(fp1);
}
fclose(fp1); /* 关闭文件指针*/
fclose(fp2);
}
4 结束语
本文重在用C语言实现文件加密的算法,对文件进行加密后的安全等级没有进行太多考量。对于本文算法的解密,不难想到,把加密后的密文作为明文再次加密即可。
参考文献:
[1] 郑宇,杨春生,于江.加密与解密实战入门[M].北京:电子工业出版社,2006.
[2] 金鼎图书工作室·加密解密—文件保护与数据恢复[M].成都:四川电子音像出版中心,2003.
[3] 谭浩强·C语言程序设计[M].北京:清华大学出版社,1998.
关键词:数据加密;C语言
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)12-2730-02
1 概述
随着网络技术的发展,网络安全也就成为当今网络社会焦点中的焦点。由于某些特殊的需要,一些敏感数据或者是保密性文件需要在网上供多人共享,电子商务、电子邮件等等,都对数据的保密要求比较高。由此,对文件进行加密就显得尤为重要。
2 什么是加密
加密就是对原来我们能够直接阅读理解的数据内容(明文)按某种特殊的算法进行处理,使其成为不可读的一段代码,通常称为“密文”。如果我们需要再次使用这些密文,必须输入相应的密钥,使密文转换为明文。通过这样的加密,可以达到保护数据不被人非法窃取、阅读的目的。常用的加密算法有置换表算法、对称密钥加密算法、基于公钥的加密算法等。
3 用C语言实现文件加密
给文件加密的算法根据加密需求的不同而分为不同的等级,该文算法能对任意一个文件进行加密,密码要求用户输入,限8位以内。
程序使用pswfile()函数实现加密,算法利用fgetc()函数和fputc()函数从文件中逐字节读取和存储数据,将读取的字节码与密钥进行异或操作,从而隐藏字节码的信息。然后,程序将异或后的字节码所对应的字符输出到目标文件中。
程序的主要代码如下:
#include
#include
#include
#include
.
void pswfile(char *inname,char *psw,char *outname);/* 函数声明*/
void main(int argc,char *argv[])
{
char inname[30];
char outname[30];
char psw[8];
if(argc!=4){ /* 容错处理*/
printf(“请输入需要加密的文件名\n”);
gets(inname);
printf(“请输入密码:\n”);
gets(psw); /* 输入密码 */
printf(psw);
printf(“请输入输出的文件名\n”);
gets(outname); /* 加密后的文件名*/
pswfile(inname,psw,outname); }
else {
strcpy(inname,argv[1]);
strcpy(psw,argv[2]);
strcpy(outname(argv[3]);
pswfile(inname,psw,outname);
}}
void pswfile(char *inname,char *psw,char *outname)
{FILE *fp1,*fp2;
char ch;
int i=0,j=0;
fp1=fopen(inname,”rb”); /*以二进制只读方式打开要加密的文件*/
if(fp1=NULL){
printf(“该文件不能打开或者不存在\n”);
exit(1); /* 如果不能打开,则退出程序 */
}
fp2=fopen(outname,”wb”);
if(fp2=NULL){
printf(“该文件不能打开或者创建给文件\n”);
exit(1); /* 如果不能加密,退出程序 */
}
while(psw[ j]);
ch=fgetc(fp1);
while(!feof(fp1)){
fputc(ch^psw[i>=j?i=0;i ],fp2); /*异或后写入文件*/
ch=fgetc(fp1);
}
fclose(fp1); /* 关闭文件指针*/
fclose(fp2);
}
4 结束语
本文重在用C语言实现文件加密的算法,对文件进行加密后的安全等级没有进行太多考量。对于本文算法的解密,不难想到,把加密后的密文作为明文再次加密即可。
参考文献:
[1] 郑宇,杨春生,于江.加密与解密实战入门[M].北京:电子工业出版社,2006.
[2] 金鼎图书工作室·加密解密—文件保护与数据恢复[M].成都:四川电子音像出版中心,2003.
[3] 谭浩强·C语言程序设计[M].北京:清华大学出版社,1998.