现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

ini文件加密解密的一种方案

2015-10-13 22:31 工业·编程 ⁄ 共 1446字 ⁄ 字号 暂无评论

思路是这样的:把将要写入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 '用来读取文件的数组

FileName1 = App.Path + "sige1.ini"

FileName2 = App.Path + "xiaosi.ini"

FileName3 = App.Path + "sige2.ini"

'=============================

'读出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

当然,以上只是进行的文件读写和编解码操作,至于程序本身其他的要求,将本代码插入程序需要的位置,即可实现。

写完了,看一下结果吧。

给我留言

留言无头像?