談到文件加密已經(jīng)有很多方法了,但傳統(tǒng)的文件型加密方法都存在一些不足。例如:讓人頭痛的密碼技術(shù)、復(fù)雜的全文加/解密算法、會(huì)產(chǎn)生垃圾文件的暗貼技術(shù)等等。這里我向大家介紹一種新的文件加密思路。
在Win 95/98中選定一個(gè)文件后單激鼠標(biāo)右鍵可以查看文件的屬性。其中會(huì)列出該文件的創(chuàng)建時(shí)間、修改時(shí)間和訪問(wèn)時(shí)間。這些信息的設(shè)置一般都是由操作系統(tǒng)(也就是由Dos/Windows等等)自動(dòng)完成的,不會(huì)讓用戶(hù)輕易修改。利用這一特性就可以實(shí)現(xiàn)很隱蔽的加密技術(shù)。
加密原理
用特定的時(shí)間信息替換原來(lái)的文件時(shí)間信息。
解密原理
獲取已加密文件的時(shí)間信息與特定時(shí)間信息比較,如相同則說(shuō)明該文件是合法的,如不同則說(shuō)明該文件屬于過(guò)期或盜版軟件。
以上簡(jiǎn)單介紹了文件時(shí)間屬性的修改方法,利用這種方法可以起到簡(jiǎn)單的軟件加密。例如:假設(shè)某個(gè)軟件或游戲執(zhí)行完后存儲(chǔ)了一些存檔文件,則操作系統(tǒng)會(huì)自動(dòng)設(shè)置該文件的修改時(shí)間,那么稍有經(jīng)驗(yàn)的用戶(hù)就可以用Windows中的“查找文件”功能找到最后被修改的文件。如果該文件是記錄密碼或用戶(hù)信息的文件(實(shí)際上很多情況都是這樣),后果簡(jiǎn)直不堪設(shè)想。另外,如果適當(dāng)設(shè)置文件的創(chuàng)建、修改時(shí)間和訪問(wèn)時(shí)間,例如:保持三者之間為一定的時(shí)間間隔就可以作為加密的一種好手段。運(yùn)行主軟件時(shí)只要?jiǎng)討B(tài)的檢測(cè)一下文件時(shí)間是否滿(mǎn)足特定的要求就知道該軟件是否過(guò)期或?qū)儆诒I版軟件,從而達(dá)到加密和保護(hù)軟件的目的,并且不會(huì)產(chǎn)生垃圾文件。
以下介紹具體實(shí)現(xiàn)方法
利用Delphi中的FindFirst函數(shù)可以得到一個(gè)文件的屬性記錄,該記錄中的FindData域中就記載了詳細(xì)的文件時(shí)間信息。FindData中的時(shí)間信息不能直接得到利用本文源程序中的CovFileDate函數(shù)可以完成文件時(shí)間格式的轉(zhuǎn)換。設(shè)置文件的時(shí)間要復(fù)雜一些,利用Delphi中的DataTimePicker組件來(lái)輔助完成這一復(fù)雜的操作??梢岳盟膫€(gè)DataTimePicker組件來(lái)完成文件創(chuàng)建時(shí)間和修改時(shí)間的設(shè)置。注意:文件的訪問(wèn)時(shí)間用修改時(shí)間來(lái)代替。使用下面的例子時(shí),請(qǐng)?jiān)谀腇orm上添加四個(gè)DataTimePicker組件。其中第一和第三個(gè)DataTimePicker組件中的Kind設(shè)置為dtkDate,第二個(gè)和第四個(gè)DataTimePicker組件中的Kind設(shè)置為dtkTime,DateMode設(shè)置為dmUpDown。
備注:修改文件時(shí)間的范圍是從公元1792年9月19日開(kāi)始的,上限可以達(dá)到公元2999年或更高。
在Win 95/98中選定一個(gè)文件后單激鼠標(biāo)右鍵可以查看文件的屬性。其中會(huì)列出該文件的創(chuàng)建時(shí)間、修改時(shí)間和訪問(wèn)時(shí)間。這些信息的設(shè)置一般都是由操作系統(tǒng)(也就是由Dos/Windows等等)自動(dòng)完成的,不會(huì)讓用戶(hù)輕易修改。利用這一特性就可以實(shí)現(xiàn)很隱蔽的加密技術(shù)。
加密原理
用特定的時(shí)間信息替換原來(lái)的文件時(shí)間信息。
解密原理
獲取已加密文件的時(shí)間信息與特定時(shí)間信息比較,如相同則說(shuō)明該文件是合法的,如不同則說(shuō)明該文件屬于過(guò)期或盜版軟件。
以上簡(jiǎn)單介紹了文件時(shí)間屬性的修改方法,利用這種方法可以起到簡(jiǎn)單的軟件加密。例如:假設(shè)某個(gè)軟件或游戲執(zhí)行完后存儲(chǔ)了一些存檔文件,則操作系統(tǒng)會(huì)自動(dòng)設(shè)置該文件的修改時(shí)間,那么稍有經(jīng)驗(yàn)的用戶(hù)就可以用Windows中的“查找文件”功能找到最后被修改的文件。如果該文件是記錄密碼或用戶(hù)信息的文件(實(shí)際上很多情況都是這樣),后果簡(jiǎn)直不堪設(shè)想。另外,如果適當(dāng)設(shè)置文件的創(chuàng)建、修改時(shí)間和訪問(wèn)時(shí)間,例如:保持三者之間為一定的時(shí)間間隔就可以作為加密的一種好手段。運(yùn)行主軟件時(shí)只要?jiǎng)討B(tài)的檢測(cè)一下文件時(shí)間是否滿(mǎn)足特定的要求就知道該軟件是否過(guò)期或?qū)儆诒I版軟件,從而達(dá)到加密和保護(hù)軟件的目的,并且不會(huì)產(chǎn)生垃圾文件。
以下介紹具體實(shí)現(xiàn)方法
利用Delphi中的FindFirst函數(shù)可以得到一個(gè)文件的屬性記錄,該記錄中的FindData域中就記載了詳細(xì)的文件時(shí)間信息。FindData中的時(shí)間信息不能直接得到利用本文源程序中的CovFileDate函數(shù)可以完成文件時(shí)間格式的轉(zhuǎn)換。設(shè)置文件的時(shí)間要復(fù)雜一些,利用Delphi中的DataTimePicker組件來(lái)輔助完成這一復(fù)雜的操作??梢岳盟膫€(gè)DataTimePicker組件來(lái)完成文件創(chuàng)建時(shí)間和修改時(shí)間的設(shè)置。注意:文件的訪問(wèn)時(shí)間用修改時(shí)間來(lái)代替。使用下面的例子時(shí),請(qǐng)?jiān)谀腇orm上添加四個(gè)DataTimePicker組件。其中第一和第三個(gè)DataTimePicker組件中的Kind設(shè)置為dtkDate,第二個(gè)和第四個(gè)DataTimePicker組件中的Kind設(shè)置為dtkTime,DateMode設(shè)置為dmUpDown。
備注:修改文件時(shí)間的范圍是從公元1792年9月19日開(kāi)始的,上限可以達(dá)到公元2999年或更高。