游戏辅助制作 :用按键精灵解决用户密码泄露
1、如何保护自己的账号密码安全?
加密/解密原理:
通过一段加密/解密代码,将我们的密码,加密后存储到uservar.ini配置文件中。这样,别人通过uservar.ini配置文件查到的我们的用户名密码,其实是假的。而需要读取uservar.ini中用户名密码的时候,我们再通过解密代码,读取到真实的密码。
我们今天介绍的转变,则是通过调用Rnd函数,产生的伪随机数列进行加密/解密。
2、下面针对加解密的代码详细讲解:
Function 加解密(源文件, 秘钥)
Dim Z, i
Dim A, B, C
加解密 = ""
If Len(源文件) = 0 Then’如果密码为空,则初始化为空
加解密 = ""
Exit Function
End If
'调用Rnd函数使以后Rnd函数所产生的Rnd为相同的伪随机数列
Z = Rnd(-秘钥)
For i = 1 To Len(源文件)’将密码字符串一个一个字符通过加密,转换成另一个字符
C = Mid(源文件, i, 1)
A = Asc(C)
B = Int(126 * Rnd) And&H7F’这里的&H7F,是指生成的伪随机代码,只取7位,以免数据溢出
A = A Xor B’Xor是可逆的,第一次运行时是得到加密后的数据,再运行一次是得到解密后的数据
C = Chr(A)
加解密 = 加解密 + C
Next
End Function
3、举个小QUI的例子吧~
Function 加解密(源文件, 秘钥)
Dim Z, i
Dim A, B, C
加解密 = ""
If Len(源文件) = 0 Then
加解密 = ""
Exit Function
End If
'调用Rnd函数使以后Rnd函数所产生的Rnd为相同的伪随机数列
Z = Rnd(-密钥)
For i = 1 To Len(源文件)
C = Mid(源文件, i, 1)
A = Asc(C)
B = Int(126 * Rnd) And&H7F
A = A Xor B
C = Chr(A)
加解密 = 加解密 + C
Next
End Function
Event Form1.Load
//获取小节名(如"e1df741f-d5ec-4ad7-969d-adb139c6a24f"),同一个Q文件生成的小节名不变
a = GetMacroID()//获取到当前脚本/小精灵de ID
加密文件=Plugin.File.ReadINI("e1df741f-d5ec-4ad7-969d-adb139c6a24f","Form1.InputBox2.Text", ".\uservar.ini")
解密文件 = 加解密(加密文件, 1234567890)'这里的1234567890是假使的密钥,可以修改,注意保密
Form1.InputBox2.Text = 解密文件
End Event
//写入密码信息
源文件 = Form1.InputBox2.Text
加密文件 = 加解密(源文件, 1234567890)
CallPlugin.File.WriteINI("e1df741f-d5ec-4ad7-969d-adb139c6a24f","Form1.InputBox2.Text", 加密文件, ".\uservar.ini")
//输出信息
RunApp "notepad.exe"
SayString Form1.InputBox1.Text
KeyPress "Enter", 1
SayString 源文件
经过加密之后呢,我所看到的uservar.ini中的用户名密码呢,已经是加密过的了
不过熊孩纸们,要注意保护咱自己的密钥和加密代码,如果别人知道了你的加密过程,相对应的也就能倒退逆序算出你的解密过程。没有一个加密是万无一失的,当然如果你能保护好自己的密钥和加密代码,别人来破解你加密后的内容,困难就更大了。

4、作者大大有话说:
脚本必须做到三个功能,一是用户任何时候打开ini文件都看不到真正密码,二是用户关闭小精灵,下次再开启时,不需要再次输入密码,所以ini不能删除,三是用户可以在QUI界面随时删除个别密码字符而正常使用,所以用MD5不太好实现这一点。