基于ADO的OLE字段的加密功能的實現(xiàn)_第1頁
基于ADO的OLE字段的加密功能的實現(xiàn)_第2頁
基于ADO的OLE字段的加密功能的實現(xiàn)_第3頁
基于ADO的OLE字段的加密功能的實現(xiàn)_第4頁
基于ADO的OLE字段的加密功能的實現(xiàn)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于的字段的加密功能的實現(xiàn)摘要:在visubalbasi6.0中,利用微軟的ad技術(shù),討論了如何把le字段加密存儲到aess數(shù)據(jù)庫中,以及如何從aess中獲取le字段并解密的實現(xiàn)方法。關(guān)鍵詞:ad;le字段;數(shù)據(jù)加密;visubalbasi0前言在開發(fā)is或a類的軟件時,經(jīng)常需要將外部圖片或各類文件保存在數(shù)據(jù)庫中,目前的關(guān)系數(shù)據(jù)庫大都有一個大二進(jìn)制字段,可以保存該類數(shù)據(jù)。將圖片及文件以二進(jìn)制方式存儲在數(shù)據(jù)庫中,可以考慮以下兩種方法:一是使用ad的strea對象的ladfrfile方法以及savetfile方法實現(xiàn);二是使用ad的rerdset.field對象的gethunk以及appendhu

2、nk方法實現(xiàn)。鑒于數(shù)據(jù)的平安性,需要將保存在le字段的數(shù)據(jù)加密。1實現(xiàn)步驟一個通用的方法是可以先將外部文件或圖片加密,然后再保存到le字段中,解密時反向操作即可,缺點是效率不高。對于使用ad的strea對象或ad的rerdset.field對象的gethunk、appendhunk保存數(shù)據(jù)的方法,由于在操作中使用了數(shù)組,可以直接將加密、解密算法在內(nèi)存中直接操作,所以在效率及平安方面都比前者的方法要好。2appendhunk及gethunk方法簡介2.1appendhunk方法語法:bjet.appendhunkdata;對象data是變體型,包含追加到對象中的數(shù)據(jù)。使用field或paraet

3、er對象的appendhunk方法可將長二進(jìn)制或字符數(shù)據(jù)填寫到對象中。在系統(tǒng)內(nèi)存有限的情況下,可以使用appendhunk方法對長整型值進(jìn)展局部而非全部的操作。在field對象上的第一個appendhunk調(diào)用將數(shù)據(jù)寫入字段,覆蓋任何現(xiàn)有的數(shù)據(jù),隨后的appendhunk調(diào)用那么添加到現(xiàn)有數(shù)據(jù)。假如將數(shù)據(jù)追加到一個字段,然后設(shè)置或讀取當(dāng)前記錄中另一個字段的值,ad那么認(rèn)為已將數(shù)據(jù)追加到第一個字段。假如在第一個字段上再次調(diào)用appendhunk方法,那么ad將調(diào)用解釋為新的appendhunk操作并覆蓋現(xiàn)有數(shù)據(jù)。訪問其他rerdset對象(并非第一個rerdset對象的復(fù)制品)中的字段將不會破壞

4、appendhunk操作。2.2gethunk方法語法:variable=field.gethunk(size);使用field對象的gethunk方法來檢索其中的局部或全部長二進(jìn)制或字符數(shù)據(jù)。在系統(tǒng)內(nèi)存有限的情況下,可使用gethunk方法操作局部而非全部lng值。gethunk調(diào)用返回的數(shù)據(jù)將被分配給variable。假如size大于剩余的數(shù)據(jù),gethunk方法僅返回剩余的數(shù)據(jù)而不用空格填充variable。假如該字段為空,gethunk方法將返回null值。每個后續(xù)的gethunk調(diào)用將從上一次gethunk調(diào)用停頓處開場檢索數(shù)據(jù)。3adstrea簡介顧名思義,adstrea以流的方式

5、來操作文件或記錄。通過pen方法來翻開strea對象來操作二進(jìn)制或文本數(shù)據(jù)的流,通過read或rite來讀寫流。用savetfile和ladfrfile方法保存和恢復(fù)文件中的數(shù)據(jù)。4關(guān)鍵代碼分析4.1使用appendhunk將文件保存到le字段:publisubpyfiletfield(fldasaddb.field,sfnae)diisizeaslngdiiaslng,ifsizeaslng,ikeyasbyteikey=2密鑰dia1()asbyte,a2()asbyte,a3()asbyte定義字節(jié)數(shù)組存放文件內(nèi)容ifsize=filelen(sfnae)pensfnaefrbinary

6、aessreadas#1redia2(ifsize)放大數(shù)組redia3(ifsize)dijaslngdillenaslngllen=ubund(a3)get#1,a3()frj=0tllen-1a2(j)=a3(j)xrikey這里用簡單的異或算法來加密nextfld.appendhunka2寫入le字段lse#1endsub4.2使用gethunk將le字段保存為文件:publisubpyfieldtfile(sfnaeasstring,fldasaddb.field)nerrrresuenextpensfnaefrbinaryaessritelkriteas#1isize=fld.at

7、ualsizeihunks=isize/isize分塊數(shù)目irestsize=isizedisize余下的局部a1()=fld.gethunk(irestsize)a2=a1llen=ubund(a1)frj=0tllen-1a2(j)=a1(j)xrikey再次異或計算就復(fù)原為原來的文件了nextput#1,a2()endifnextilse#1endsub4.3以流的方式保存文件到數(shù)據(jù)庫中publisubsavefiletdb(fasstring,fldasstring)diistasaddb.streadiireasaddb.rerdsetdiinstrasstringsetist=ne

8、addb.streadiifilesizeaslngdia1()asbyte,a2()asbyteithist.type=adtypebinary二進(jìn)制形式.pen.ladfrfilefifilesize=.size.psitin=0a1=.read讀取流到字節(jié)數(shù)組endithist.psitin=0a2=a1diiaslngifilesize=ubund(a1)fri=0tifilesize-1a2(i)=a1(i)xr2nextist.ritea2數(shù)據(jù)庫連接字符串in=nnstr翻開保存文件的表setire=neaddb.rerdsetist.psitin=0ithire.pen“tbrd

9、,in,adpenkeyset,adlkptiisti.fields(fld)=ist.read.updateendith完成后關(guān)閉對象ire.lseist.lseendsub4以流的方式從數(shù)據(jù)庫讀取數(shù)據(jù)生成文件publifuntinreadfilefrdb(fasstring,fldasstring)asstringsetire=neaddb.rerdsetire.pen“tbrd,in,adpenkeyset,adlkreadnly保存到文件setist=neaddb.streaithist.de=addereadrite.type=adtypebinary.pen.riteire(fld).psitin=0a1=ire(fld)a2=a1diiaslngifilesize=ubund(a1)fri=0tifilesizea2(i)=a1(i)xr2next.ritea2.psitin=0.savetfilef,adsavereateverrite生成文件endithire.lseist.lseendfuntin5完畢語ad的strea對象和rerdset.field對象的gethunk、appendhunk方法是操作數(shù)據(jù)庫le字段常用的兩種方法。gethunk、a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論