Excel的數(shù)據(jù)加密方法

相信大家對Excel不會陌生了吧!很多人都喜歡用Excel來存數(shù)據(jù),比如工資表,財務(wù)報表等,而這些數(shù)據(jù)又不能隨意公開,那么給Excel加密就至關(guān)重要了。

1.基于Excel自身的加密

對于Excel文件,可認為有工作簿組成,而工作簿由若干工作表組成。因此,基于Excel本身,可采取兩種保護方法:工作表保護和工作簿保護。

(1)工作表保護。點擊“工具”—>“保護”,—>“保護工作表”,可以設(shè)定密碼保護你的工作表,以防止自己無意的修改或他人未經(jīng)授權(quán)的修改。此功能可使非法用戶只能看到工作表內(nèi)容,但無法對文件進行修改。如果用戶想在總體保護表的情況下對表的個別數(shù)據(jù)進行修改,可在保護工作表之前,設(shè)置“單元格格式”-“保護”選項,選擇鎖定或隱藏復(fù)選框。取消鎖定則在保護工作表之后仍可修改此區(qū)域數(shù)據(jù)。設(shè)置隱藏可使保護工作表之后,隱藏公式數(shù)據(jù)。

(2)工作簿保護。Excel為用戶提供了二種方式來保護工作薄。點擊“工具”—>保護”—>“保護工作簿”,可以設(shè)定密碼保護你的工作簿的結(jié)構(gòu)和窗口。保護“結(jié)構(gòu)”,是指工作簿中的工作表將不能進行移動、刪除、隱裁、取消隱跟或重新命名,不能插入新的工作表。保護“窗口”可以在打開工作簿時保持窗口的固定位位置和大小。

上述兩種方法存在一些問題:即在保護之后,非法用戶雖然無法修改文件內(nèi)容但仍能看到文件內(nèi)容,從而泄露重要數(shù)據(jù)。因此這兩種可認為是對合法用戶(管理員)起到一定的防止誤操作的輔助手段,無法從根本保護數(shù)據(jù)不被泄露。

(3)文件口令保護。點擊“工具”—>“選項”,—>“安全性”可以設(shè)定打開權(quán)限密碼或修改權(quán)限密碼保護你Excel文件。

設(shè)置打開權(quán)限密碼之后,在沒有輸入正確的密碼之前,Excel將不允許用戶打開這一Excel文件,從而也就無法看到文件內(nèi)容。設(shè)置修改權(quán)限密碼之后,在輸入打開權(quán)限密碼后,Excel文件將繼續(xù)要求您輸入修改密碼,如果密碼無效,則只能以只讀方式打開。但是這種方法打開之后,如果做了修改,系統(tǒng)會提示你另存文件,另存之后,新的文件修改密碼自動失效,打開密碼仍起作用。

2.基于Excel文件的加密

鑒于采用上述方法使文件部分數(shù)據(jù)能夠被非法用戶得到,我們采用對整個文件進行加密,極大地增加了安全性,原理如下:整個系統(tǒng)有兩個模塊構(gòu)成,加密模塊encrypt和解密模塊decrypt。當需要加密文件時,命令格式為:encryptexcel文件名。當需要解密文件時,命令格式為:decryptexcel文件名。

加密原理為:假設(shè)文件原始內(nèi)容為M,用戶隨機選定一個密鑰為P,然后M和P異或運算得到密文C。即:。

解密原理為:密文C和密鑰P異或運算得到原始內(nèi)容。

實際上,只要對加密文件再加一次密,即得原始文件,即只需一個加密模塊即可。

實現(xiàn)主要代碼如下:

#include

#include

void main(int argc,char *argv[])

{

FILE *fp1,*fp2; //fp1:原始文件內(nèi)容;fp2:加密文件內(nèi)容。

if(argc!=3) exit(0);

if((fp1=fopen(argv[1],"rb"))==NULL)

{

printf("Can not open the file\n");

exit(0);

}

fp2=fopen(argv[2],"wb");

while(!feof(fp1))

fputc(fgetc(fp1)^30,fp2);

fclose(fp1);

fclose(fp2);

}

3.基于單元格的加密

在實際應(yīng)用中,我們有時并不需要加密所有數(shù)據(jù),如職工工資表,我們只需對工資數(shù)據(jù)等設(shè)計個人隱私的信息進行加密,而諸如職工名、性別、籍貫等不敏感信息則不需要保護。在這種情況下,我們可將加密單位設(shè)計為單元格,從而更方便用戶的使用,并且加密更加安全具體。對于單元格的加密,我們采用VBA編程技術(shù)。比如,要對應(yīng)發(fā)工資這一項進行加密保護。主要代碼如下:

Sub encrpt_pay()

Dim i As Integer

For i = 2 To 10‘加密數(shù)據(jù)所在的范圍

Range("E" + Format(i)) = Range("A" + Format(i)) Xor 32

Next

End Sub

這樣非法用戶看到的只是一些無實際意義的信息,從而保護了加密信息,如需解密,再執(zhí)行一次即可。對其他重要的信息方法類似。

小知識:

Microsoft Excel是微軟公司的辦公軟件Microsoft office的組件之一,是由Microsoft為Windows和Apple Macintosh操作系統(tǒng)的電腦而編寫和運行的一款試算表軟件。Excel 是微軟辦公套裝軟件的一個重要的組成部分,它可以進行各種數(shù)據(jù)的處理、統(tǒng)計分析和輔助決策操作,廣泛地應(yīng)用于管理、統(tǒng)計財經(jīng)、金融等眾多領(lǐng)域。