[摘要]
本文介紹了在Delphi中利用系統函數和Windows API函數配合Delphi中的DataTimePicker組件來獲取和修改文件的時間信息的方法
以達到軟件信息的簡單加密
談到文件加密已經有很多方法了但傳統的文件型加密方法都存在一些不足例如讓人頭痛的密碼技術復雜的全文加/解密算法會產生垃圾文件的暗貼技術等等這裡我向大家介紹一種新的文件加密思路在Win /中選定一個文件後單激鼠標右鍵可以查看文件的屬性其中會列出該文件的創建時間修改時間和訪問時間這些信息的設置一般都是由操作系統(也就是由Dos/Windows等等)自動完成的不會讓用戶輕易修改利用這一特性就可以實現很隱蔽的加密技術
加密原理用特定的時間信息替換原來的文件時間信息
解密原理獲取已加密文件的時間信息與特定時間信息比較如相同則說明該文件是合法的如不同則說明該文件屬於過期或盜版軟件
以上簡單介紹了文件時間屬性的修改方法利用這種方法可以起到簡單的軟件加密例如假設某個軟件或游戲執行完後存儲了一些存檔文件則操作系統會自動設置該文件的修改時間那麼稍有經驗的用戶就可以用Windows中的查找文件功能找到最後被修改的文件如果該文件是記錄密碼或用戶信息的文件(實際上很多情況都是這樣)後果簡直不堪設想另外如果適當設置文件的創建修改時間和訪問時間例如保持三者之間為一定的時間間隔就可以作為加密的一種好手段運行主軟件時只要動態的檢測一下文件時間是否滿足特定的要求就知道該軟件是否過期或屬於盜版軟件從而達到加密和保護軟件的目的並且不會產生垃圾文件
以下介紹具體實現方法
利用Delphi中的FindFirst函數可以得到一個文件的屬性記錄該記錄中的FindData域中就記載了詳細的文件時間信息FindData中的時間信息不能直接得到利用本文源程序中的CovFileDate函數可以完成文件時間格式的轉換
設置文件的時間要復雜一些利用Delphi中的DataTimePicker組件來輔助完成這一復雜的操作可以利用四個DataTimePicker組件來完成文件創建時間和修改時間的設置注意文件的訪問時間用修改時間來代替
使用下面的例子時請在您的Form上添加四個DataTimePicker組件其中第一和第三個DataTimePicker組件中的Kind設置為dtkDate第二個和第四個DataTimePicker組件中的Kind設置為dtkTimeDateMode設置為dmUpDown
備注修改文件時間的范圍是從公元年月日開始的上限可以達到公元年或更高另外請不要將此技術用於破壞他人文件等非正當途徑
From:http://tw.wingwit.com/Article/program/Delphi/201311/25080.html