ini文件加密
ini文件在xml的強勁攻勢下,似乎已到了退出舞臺的時候,但是在某些簡單的設置保存中,使用ini文件還是一個不錯的選擇。
譬如保存歌曲列表、用戶名、密碼等等,瀏覽器The world似乎也是用ini來保存很多信息,有時候我們不希望ini的信息被別人看到,那么就需要對其進行加密。
下面,小廝就這一話題展開。
思路是這樣的,把將要寫入ini的內(nèi)容進行編碼,使ini文件的內(nèi)容為亂碼,
在程序需要讀取ini文件的內(nèi)容時,在將其解碼,然后讀出,而這一編解碼的算法只有程序員知道,所以ini文件的信息也就安全了。
說的詳細一點就是這樣的過程:
譬如可執(zhí)行程序xiaosi.exe和配置文件xiaosi.ini都位于c:chatang下,xiaosi.ini的內(nèi)容是亂碼。
當運行程序xiaosi.exe時,程序在c:windowssystem32下創(chuàng)建另一個配置文件sige.ini(當然這個位置和文件名只有程序員一個人知道),
并對xiaosi.ini進行解碼,解出的內(nèi)容存入sige.ini中,之后xiaosi.exe對ini配置文件進行的所有讀寫操作都對sige.ini執(zhí)行,
在xiaosi.exe程序退出時,將sige.ini的內(nèi)容編碼寫入到xiaosi.ini中,然后將sige.ini刪除。
下面說一下所謂的編解碼算法(其實也稱不上算法的,只是一個小運算而已)。
我們知道(A XOR B) XOR B =A XOR (B XOR B)=A XOR 0=A
所以,我們假設A為sige.ini的內(nèi)容,
B為一個隨機數(shù),則A XOR B就是亂碼,我們將其寫入文件xiaosi.ini,
在讀出文件的時候,再取xiaosi.ini的內(nèi)容即A XOR B,再進行一次與B的異或操作,(A XOR B) XOR B=A,將A寫入sige.ini中,即完成了解碼操作。
下面開始寫代碼了。
Dim FileName1 As String '第一個文件
Dim FileName2 As String '第二個文件
Dim FileName3 As String '第二個文件
Dim arry() As Byte '用來讀取文件的數(shù)組
FileName1 = App.Path + "sige1.ini"
FileName2 = App.Path + "xiaosi.ini"
FileName3 = App.Path + "sige2.ini"
'=============================
'讀出sige1.ini的內(nèi)容,進行編碼
Open FileName1 For Binary As #1
ReDim arry(LOF(1) - 1) '重定義數(shù)組
Get #1, , arry() '取得第一文件的內(nèi)容到數(shù)組
For i = 0 To LOF(1) - 1
arry(i) = "&H" & Hex(arry(i)) Xor &H58 '&H58當然可以是任意的數(shù)值
Next i
Close #1
'==================================
'編碼后的內(nèi)容(亂碼)寫入xiaosi.ini
Open FileName2 For Binary As #2
Put #2, , arry()
Close #2
'==================================
'讀出xiaosi.ini的內(nèi)容進行解碼
Open FileName2 For Binary As #3
ReDim arry(LOF(3) - 1)
Get #3, , arry()
For i = 0 To LOF(3) - 1
arry(i) = "&H" & Hex(arry(i)) Xor &H58
Next i
Close #3
'==================================
'解碼后的內(nèi)容(亂碼)寫入sige2.ini
Open FileName3 For Binary As #4
Put #4, , arry()
Close #4
當然,以上只是進行的文件讀寫和編解碼操作,至于程序本身其他的要求,將本代碼插入程序需要的位置,即可實現(xiàn)。
寫完了,看一下結果吧。
?
總結
- 上一篇: Windows2003如何安装IIS
- 下一篇: css兼容IE8