ini檔案加密

2021-05-12 18:32:26 字數 2015 閱讀 1660

ini檔案在xml的強勁攻勢下,似乎已到了退出舞台的時候,但是在某些簡單的設定儲存中,使用ini檔案還是乙個不錯的選擇。

譬如儲存歌曲列表、使用者名稱、密碼等等,瀏覽器the world似乎也是用ini來儲存很多資訊,有時候我們不希望ini的資訊被別人看到,那麼就需要對其進行加密。

下面,小廝就這一話題展開。

思路是這樣的,把將要寫入ini的內容進行編碼,使ini檔案的內容為亂碼,

在程式需要讀取ini檔案的內容時,在將其解碼,然後讀出,而這一編譯碼的演算法只有程式設計師知道,所以ini檔案的資訊也就安全了。

說的詳細一點就是這樣的過程:

譬如可執行程式xiaosi.exe和配置檔案xiaosi.ini都位於c:chatang下,xiaosi.ini的內容是亂碼。

當執行程式xiaosi.exe時,程式在c:windowssystem32下建立另乙個配置檔案sige.ini(當然這個位置和檔名只有程式設計師乙個人知道),

並對xiaosi.ini進行解碼,解出的內容存入sige.ini中,之後xiaosi.exe對ini配置檔案進行的所有讀寫操作都對sige.ini執行,

在xiaosi.exe程式退出時,將sige.ini的內容編碼寫入到xiaosi.ini中,然後將sige.ini刪除。

下面說一下所謂的編譯碼演算法(其實也稱不上演算法的,只是乙個小運算而已)。

我們知道(a xor b) xor b =a xor (b xor b)=a xor 0=a

所以,我們假設a為sige.ini的內容,

b為乙個隨機數,則a xor b就是亂碼,我們將其寫入檔案xiaosi.ini,

在讀出檔案的時候,再取xiaosi.ini的內容即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 '用來讀取檔案的陣列

'*************************====

'讀出sige1.ini的內容,進行編碼

open filename1 for binary as #1

redim arry(lof(1) - 1) '重定義陣列

get #1, , arry() '取得第一檔案的內容到陣列

for i = 0 to lof(1) - 1

arry(i) = "&h" & hex(arry(i)) xor &h58 '&h58當然可以是任意的數值

next i

close #1

'******************************====

'編碼後的內容(亂碼)寫入xiaosi.ini

open filename2 for binary as #2

put #2, , arry()

close #2

'******************************====

'讀出xiaosi.ini的內容進行解碼

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

'******************************====

'解碼後的內容(亂碼)寫入sige2.ini

open filename3 for binary as #4

put #4, , arry()

close #4

當然,以上只是進行的檔案讀寫和編譯碼操作,至於程式本身其他的要求,將本**插入程式需要的位置,即可實現。

寫完了,看一下結果吧。

INI檔案程式設計

在我們寫的程式當中,總有一些配置資訊需要儲存下來,以便完成程式的功能,最簡單的辦法就是將這些資訊寫入ini檔案中,程式初始化時再讀入.具體應用如下 一.將資訊寫入.ini檔案中.1.所用的winapi函式原型為 bool writeprivateprofilestring lpctstr lpkey...

讀取INI檔案

讀取ini檔案 ini ini new ini using system using system.text using system.runtime.interopservices namespace qf public string path 引用動態連線庫方法 dllimport kernel...

ini檔案操作

uses inifiles 寫入 varfilename string fileini tinifile begin filename extractfilepath paramstr 0 connect.ini fileini tinifile.create filename fileini.wr...