【水】存档验证的示例
昨天 116 觉得 lyh 的教程写的不是很清楚,我就重新整了一个比较简洁明了的也希望可以帮到其他同学(
https://z3.ax1x.com/2021/05/10/gYLXQO.png
https://z3.ax1x.com/2021/05/10/gYLOSK.png
mfa文件:
不错的教程,但是希望版主还是能给大家讲解一下md5的作用机理,以及md5和string parser这两个插件的用法 quickhash和stringparser是干啥的。。。 数字1528君 发表于 2021-5-10 23:34
quickhash和stringparser是干啥的。。。
这里用到了 QuickHash 扩展的 MD5 运算
MD5 运算简而言之就是,你随便给定一串字符,这个字符要多长都行,经过 MD5 运算一波计算之后
就会得到一串长度固定的字符,重点在于,要想通过这串新字符反推出原字符是极其困难的
示例中甚至还人为地加了一些字符,这样其他人更加猜不到这个 MD5 值是怎么得到的了
String Parser 呢,这里就用了一个功能
它可以读取整个文件的字符
所以我们就可以直接对整个文件求 MD5 值,把这个值作为我们验证存档是否被篡改的依据
说白了这种验证式的存档防修改手段就是:
1.把整个存档的某些数据经过一些不可逆运算的处理,得到一个值
2.把这个值也写入存档
3.下次在存档/读档的时候,我们先对存档进行验证,即通过相同的不可逆运算得到的值与存入的值是否一致
如果不一致,我们就可以认为玩家人为地修改了存档
MD5,仅仅是其中一种不可逆运算罢了。
lyh 教程用的 CRC32,换汤不换药
zqh 也曾经利用取余运算来进行存档验证
其实这都算是不可逆运算
示例中先把 key 值清空是必要的,你可以想想不清空会发生什么(
不清空的话得到的 MD5 值肯定不一样了嘛,毕竟 key 值已经存好了
MD5 算法比较厉害,应用也挺广泛的,感兴趣可以自己百度呀(
文件验证,记住密码啥的很多地方都有用哦(
然后这个算法被一个中国的数学老师给破解了(
(当然没必要因此就说拿这个做校验不行 毕竟校验的目的只要破解成本大就行了
页:
[1]