这在小型超级计算机上可行吗?

问题描述

| 我正在研究WEP,作为其中的一部分,我正在研究RC4算法。我正在尝试确定是否可以编写一个反向表(尽管很大...我没有空间,也不打算写一个)。为此,我决定检查前10个字节中有多少个匹配的输出。这将帮助我确定逆表的工作情况。 当然,64位RC4加密具有2 ^ 64个可能的密钥,因此这意味着进行〜2 ^ 128个比较。另外,每次比较必须生成10个字节,这大约是265个循环。 (对于RC4初始化为256,对于字节本身为10)。 开展业务: 在具有约100个内核的超级计算机上,是否有可能在20天内执行约2 ^ 135次计算? (开始之前只有20天的时间。我可能只有8天,或者我可能有400多岁,但我猜是100个内核。) 如果有什么用,我的程序是用Java编写的。 http://pastie.org/2118864     

解决方法

        有趣的问题,很难正确回答。可伸缩性是大多数时候“尝试一下”的事情之一。 要注意的一件事是,由于其他因素,多核系统将获得小于线性的缩放比例。 假设您的程序每秒可以比较
n
个键。因此,理想的(即线性)100核系统将每秒计算
100n
个密钥。要比较所有密钥(在最坏的情况下,现实将是其中的一半)将需要2天的时间。 如果ѭ0是1000,则将花费5041220250650680569829087031221211天,这比某些关于宇宙年龄的估计要长约1000亿倍。 因此,我要说的是...否:)密码学算法是专为这类攻击而设计的。同样,在编写这样的应用程序时,Java将是最后选择的语言:     ,        在理想的世界中,它围绕着: 2135次运算÷20天÷24小时/天÷60分钟/小时÷60秒/分钟÷100内核=每秒每内核1032次操作(Hz /内核),假设我的数学没有关闭。 您需要1032 Hz的内核,每个时钟进行一次计算。通常,它需要多个。至少可以说,这目前还无法实现。如果您幸运的话,超级计算机所能达到的最佳效果大概是在大约10 GHz = 1010 Hz /核心的整个范围内。 (这全都无视阿姆达尔定律...)     ,        人们没有意识到数字有多大。 2 ^ 135大约是4e40,好的,43556142965880123323311949751266331066368。 假设您有一台能够执行1 exaflop的计算机,这比我们今天拥有的计算机快得多。因此,如果它能够在每个浮点运算中进行这些计算之一,那么它可以在一秒钟内完成10 ^ 18的运算。这仍然需要您4e22秒。每年大约有31536000秒,因此您的小企业仍将花费超过1e15年的时间。 好吧,取决于与您交谈的对象,宇宙大约在6000年到130亿年左右之间。 是否使用Java,答案是否定的。 (天网在这里吗?)     ,        这些数字有些虚构。他们主要是为了提出观点。数学过于乐观以使其变得更容易。 一个内核每秒可处理40亿(232)次操作(这是非常乐观的数字) 并且由于每天有86400秒(最多217秒) 和20天(最多25天) 和100核(最多27个) 然后... 232 * 217 * 25 * 27 == 2(32 + 17 + 5 + 7)== 261个计算... 没有机会。甚至没有远程关闭。剩余的计算量是如此之大,我什至无法理解它的真正含义。对不起:-) (根据以上数字,将需要279天...)     ,        宇宙中至少有2 ^ 240个原子,因此即使每天进行一次计算,您甚至不需要半数原子就可以对其进行计算。再说一次,比尔·盖茨不是说过“谁需要宇宙中一半以上的原子?”     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...