游戏辅助制作 :用按键精灵解决用户密码泄露
1、如何保护自己的账号密码安全?加密/解密原理:通过一段加密/解密代码,将我们的密码,加密后存储到uservar.ini配置文件中。这样,别人通过uservar.ini配置文件查到的我们的用户名密码,其实是假的。而需要读取uservar.ini中用户名密码的时候,我们再通过解密代码,读取到真实的密码。我们今天介绍的转变,则是通过调用Rnd函数,产生的伪随机数列进行加密/解密。
2、下面针对加解密的代码详细愍父煜暌讲解:Function加解密(源文件,秘钥)DimZ,iDimA,B,C加解密租涫疼迟=""IfLen(源文件)=0Then’如果密码为空,则初始化为空加解密=""ExitFunctionEndIf'调用Rnd函数使以后Rnd函数所产生的Rnd为相同的伪随机数列Z=Rnd(-秘钥)Fori=1ToLen(源文件)’将密码字符串一个一个字符通过加密,转换成另一个字符C=Mid(源文件,i,1)A=Asc(C)B=Int(126*Rnd)And&H7F’这里的&H7F,是指生成的伪随机代码,只取7位,以免数据溢出A=AXorB’Xor是可逆的,第一次运行时是得到加密后的数据,再运行一次是得到解密后的数据C=Chr(A)加解密=加解密+CNextEndFunction
3、举个小QUI的例子吧~Function加解密(源文件,秘钥)DimZ,iDimA,B,C加解密=""IfLen(源文件像粜杵泳)=0Then加解密=""ExitFunctionEndIf'调用Rnd函数使以后Rnd函数所产生的Rnd为相同的伪随机数列Z=Rnd(-密钥)Fori=1ToLen(源文件)C=Mid(源文件,i,1)A=Asc(C)B=Int(126*Rnd)And&H7FA=AXorBC=Chr(A)加解密=加解密+CNextEndFunctionEventForm1.Load//获取小节名(如"e1df741f-d5ec-4ad7-969d-adb139c6a24f"),同一个Q文件生成的小节名不变a=GetMacroID()//获取到当前脚本/小精灵deID加密文件=Plugin.File.ReadINI("e1df741f-d5ec-4ad7-969d-adb139c6a24f","Form1.InputBox2.Text",".\uservar.ini")解密文件=加解密(加密文件,1234567890)'这里的1234567890是假使的密钥,可以修改,注意保密Form1.InputBox2.Text=解密文件EndEvent//写入密码信息源文件=Form1.InputBox2.Text加密文件=加解密(源文件,1234567890)CallPlugin.File.WriteINI("e1df741f-d5ec-4ad7-969d-adb139c6a24f","Form1.InputBox2.Text",加密文件,".\uservar.ini")//输出信息RunApp"notepad.exe"SayStringForm1.InputBox1.TextKeyPress"Enter",1SayString源文件经过加密之后呢,我所看到的uservar.ini中的用户名密码呢,已经是加密过的了不过熊孩纸们,要注意保护咱自己的密钥和加密代码,如果别人知道了你的加密过程,相对应的也就能倒退逆序算出你的解密过程。没有一个加密是万无一失的,当然如果你能保护好自己的密钥和加密代码,别人来破解你加密后的内容,困难就更大了。
4、作者大大有话说:脚本必须做到三个功能,一是用户任何时候打开ini文件都看不到真正密码,二是用户关闭小精灵,下次再开启时,不需要再次输入密码,所以ini不能删除,三是用户可以在QUI界面随时删除个别密码字符而正常使用,所以用MD5不太好实现这一点。