文件加密算法实现

2014-07-03 18:52王树斌赵杨杰
电脑知识与技术 2014年12期
关键词:明文加密算法密文

王树斌 赵杨杰

摘要:该文简单介绍了加密的概念以及常用的加密技术,并用一个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.

猜你喜欢
明文加密算法密文
一种针对格基后量子密码的能量侧信道分析框架
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
奇怪的处罚
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争
云存储中支持词频和用户喜好的密文模糊检索
Hill加密算法的改进