Ecel數(shù)據(jù)加密方案

時(shí)間:2022-03-11 11:04:00

導(dǎo)語:Ecel數(shù)據(jù)加密方案一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

Ecel數(shù)據(jù)加密方案

[摘要]Excel是目前辦公系統(tǒng)以及實(shí)驗(yàn)數(shù)據(jù)處理中常用的應(yīng)用系統(tǒng)之一。大量重要的敏感數(shù)據(jù)被集中存放在文件里,數(shù)據(jù)的安全性是大多數(shù)用戶非常關(guān)切的。本文提出了幾種加密方案,并對它們的原理和使用方法做了詳細(xì)說明。然后對各種加密方案安全性能方面進(jìn)行對比分析,為用戶在保護(hù)excel敏感數(shù)據(jù)方面提供了一些借鑒。

[關(guān)鍵詞]Excel安全性加密分析

一、實(shí)現(xiàn)過程

1.基于Excel自身的加密。對于Excel文件,可認(rèn)為有工作簿組成,而工作簿由若干工作表組成。因此,基于Excel本身,可采取兩種保護(hù)方法:工作表保護(hù)和工作簿保護(hù)。

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

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

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

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

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

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

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

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

實(shí)際上,只要對加密文件再加一次密,即得原始文件,即只需一個(gè)加密模塊即可。實(shí)現(xiàn)主要代碼如下:

#include

#include

voidmain(intargc,char*argv[])

{

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

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

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

{

printf("Cannotopenthefile\n");

exit(0);

}

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

while(!feof(fp1))

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

fclose(fp1);

fclose(fp2);

}

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

Subencrpt_pay()

DimiAsInteger

Fori=2To10‘加密數(shù)據(jù)所在的范圍

Range("E"+Format(i))=Range("A"+Format(i))Xor32

Next

EndSub

這樣非法用戶看到的只是一些無實(shí)際意義的信息,從而保護(hù)了加密信息,如需解密,再執(zhí)行一次即可。對其他重要的信息方法類似。不再說明。下一步,我們將考慮并設(shè)計(jì)更加安全并方便用戶使用的保護(hù)方案。

參考文獻(xiàn):

[1]張丹:喬春華.EXCEL工作表的保護(hù).內(nèi)蒙古科技與經(jīng)濟(jì).2004.22

[2]潭浩強(qiáng)編著.C程序設(shè)計(jì).清華大學(xué)出版社,1999