王樹斌 趙楊杰
摘要:該文簡單介紹了加密的概念以及常用的加密技術(shù),并用一個C語言程序?qū)崿F(xiàn)了文件加密。
關(guān)鍵詞:數(shù)據(jù)加密;C語言
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)12-2730-02
1 概述
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)安全也就成為當(dāng)今網(wǎng)絡(luò)社會焦點中的焦點。由于某些特殊的需要,一些敏感數(shù)據(jù)或者是保密性文件需要在網(wǎng)上供多人共享,電子商務(wù)、電子郵件等等,都對數(shù)據(jù)的保密要求比較高。由此,對文件進(jìn)行加密就顯得尤為重要。
2 什么是加密
加密就是對原來我們能夠直接閱讀理解的數(shù)據(jù)內(nèi)容(明文)按某種特殊的算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱為“密文”。如果我們需要再次使用這些密文,必須輸入相應(yīng)的密鑰,使密文轉(zhuǎn)換為明文。通過這樣的加密,可以達(dá)到保護(hù)數(shù)據(jù)不被人非法竊取、閱讀的目的。常用的加密算法有置換表算法、對稱密鑰加密算法、基于公鑰的加密算法等。
3 用C語言實現(xiàn)文件加密
給文件加密的算法根據(jù)加密需求的不同而分為不同的等級,該文算法能對任意一個文件進(jìn)行加密,密碼要求用戶輸入,限8位以內(nèi)。
程序使用pswfile()函數(shù)實現(xiàn)加密,算法利用fgetc()函數(shù)和fputc()函數(shù)從文件中逐字節(jié)讀取和存儲數(shù)據(jù),將讀取的字節(jié)碼與密鑰進(jìn)行異或操作,從而隱藏字節(jié)碼的信息。然后,程序?qū)惢蚝蟮淖止?jié)碼所對應(yīng)的字符輸出到目標(biāo)文件中。
程序的主要代碼如下:
#include
#include
#include
#include
.
void pswfile(char *inname,char *psw,char *outname);/* 函數(shù)聲明*/
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”); /*以二進(jìn)制只讀方式打開要加密的文件*/
if(fp1=NULL){
printf(“該文件不能打開或者不存在\n”);
exit(1); /* 如果不能打開,則退出程序 */
}
fp2=fopen(outname,”wb”);
if(fp2=NULL){
printf(“該文件不能打開或者創(chuàng)建給文件\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); /* 關(guān)閉文件指針*/
fclose(fp2);
}
4 結(jié)束語
本文重在用C語言實現(xiàn)文件加密的算法,對文件進(jìn)行加密后的安全等級沒有進(jìn)行太多考量。對于本文算法的解密,不難想到,把加密后的密文作為明文再次加密即可。
參考文獻(xiàn):
[1] 鄭宇,楊春生,于江.加密與解密實戰(zhàn)入門[M].北京:電子工業(yè)出版社,2006.
[2] 金鼎圖書工作室·加密解密—文件保護(hù)與數(shù)據(jù)恢復(fù)[M].成都:四川電子音像出版中心,2003.
[3] 譚浩強(qiáng)·C語言程序設(shè)計[M].北京:清華大學(xué)出版社,1998.