返回第286章 破解坏苹果(1 / 2)一碗酸梅汤首页

关灯 护眼     字体:

上一章 目录 下一页

江寒用Python设计了一个程序,将“弹性碰撞”算法实现了出来。

所谓“弹性碰撞”,通俗的说法就是“碰瓷儿”。

首先准备一个种子函数,然后让算法随机修改函数的参数和结构,衍生出各种各样的函数。

在极其罕见的情况下,有的函数可能与1个核心方程中的某一个,在某些特征上表现出足够的相似度。

当搜索到了这样的函数,就将其替换到“苹果核”上去。

众所周知,两个同阶微分方程,如果结构、系数等方面,并不完全相同,那么通常来说,就是两个完全不同的方程,理论上来说,是不能互相替换的。

但在计算机中,有的时候这样做却是可行的。

这是因为,任何计算机的精度都是有限的,只能近似地体现出方程或函数的部分特征,而非全部。

所以,如果两个函数或方程,在某些方面可以重合,尤其是上下文中需要体现的那部分特征,只要没有出现任何出入,那么就可以在计算机内部,将两者等同看待。

当然,单靠人力计算,想要进行这样的碰瓷儿,几乎是不可能的。

但现在嘛……

有了“弹性碰撞”算法,就为机器求解提供了实施的途径。

相比于穷举法,“弹性碰撞”的优点是可以节省大量时间,缺点就是可能存在漏解。

而且,这是一种碰运气的算法,可能一秒钟就能找到答案,也可能一辈子都找不到。

那么,如何提高碰瓷成功的概率,缩短等待的时间呢?

答案很简单,可以采用并行计算。

好吧,说实话,这个时候,江寒就深刻地认识到量子计算机的优越性了。

而在只有经典计算机的当下,解决这种大规模计算,只能靠人多力量大……

江寒将“弹性碰撞”程序上传到了自己布置在车库中的IBM服务器和五台工作站中,让它们同步运行了起来。

随后,他就拿出一本《密码学算法,看了起来。

每隔大约1个小时,江寒就通过笔记本电脑,远程检查一下服务器和各个工作站,看看“弹性碰撞”的运行情况。

事实证明,他今天的运气还真不错。

仅仅在第3次例行巡查中,江寒就欣喜地发现,居然有三台工作站,找到了可用数据。

碰瓷成功!

接下来,就比较简单了。

将这3条数据中的任意一条,替换到“苹果核”上去,都会让原本完美无瑕的坏苹果,产生一条细微的裂隙。

如果将3条数据全部换上去……

江寒这样做完之后,欣赏着遍体鳞伤的“苹果核”,不禁满意地一笑。

随后他就开始抽丝剥茧,手工拆解“苹果核”。

这个过程异常繁琐,持续了足足10个小时。

晚上点左右,夏如虹回来了。

江寒就捧着笔记本,回到了自己的房间,然后继续操作。

直到天色蒙蒙亮,他才终于将苹果核中,那些冗余的方程和参数,全部手工合并、排除掉。

现在只剩下了一条高阶微分方程,只是经过多次变形,看起来已经十分丑陋,且臃肿不堪……

接下来,就是设计一个穷举算法,为这个方程求出一组近似解,再以这组数值解为核心,打造出一把“削皮刀”,给“坏苹果”脱壳……

凌晨5点,被彻底洗白白,焕然一新的“坏苹果”,终于再次出现在了江寒的眼前。

先将其写入坏苹果基板,试着运行了一下。

结果十分令人欣喜,程序运行完全正常。

这说明在脱壳的过程中,原始数据并没有任何损坏。

接下来,江寒又用Python编写了一个小工具,对比了一下脱壳前后的ROM。

对比结果显示,加密后再次洗白的“坏苹果”,比原始文件多出了大约11%的垃圾数据。

江寒看到这个结果,忍不住叹了口气。

数据终究还是被污染了一点点。

这说明自己的解密步骤,并没有臻至十全十美,仍有可优化的地方。

不过,这些垃圾数据虽然没什么用处,但一般来说,也不会产生任何危害。

就算放着不管,也完全没关系。

接下来,江寒再次登录了KAGGLE官网,进入锦标赛页面,将焕然一新的坏苹果传了上去。

一切搞定,已经凌晨6点多,江寒洗了把脸,直接下楼。

『加入书签,方便阅读』

上一章 目录 下一页