Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这在小型超级计算机上实用吗?_Java_Supercomputers - Fatal编程技术网

Java 这在小型超级计算机上实用吗?

Java 这在小型超级计算机上实用吗?,java,supercomputers,Java,Supercomputers,我正在调查WEP,作为其中的一部分,我正在玩弄RC4算法。我试图决定是否可以写一个逆表(虽然很大,但我没有空间,也不打算写一个)。为此,我决定检查前10个字节中有多少匹配的输出。这将帮助我决定逆表的工作效果 当然,64位RC4加密有2^64个可能的密钥,因此这意味着要进行~2^128次比较。另外,每次比较必须生成10个字节,约为265个循环。(256用于RC4初始化,10用于字节本身) 具体到业务: 在一台拥有大约100个内核的超级计算机上,是否有可能在20天内执行大约2^135次计算? (20

我正在调查WEP,作为其中的一部分,我正在玩弄RC4算法。我试图决定是否可以写一个逆表(虽然很大,但我没有空间,也不打算写一个)。为此,我决定检查前10个字节中有多少匹配的输出。这将帮助我决定逆表的工作效果

当然,64位RC4加密有2^64个可能的密钥,因此这意味着要进行~2^128次比较。另外,每次比较必须生成10个字节,约为265个循环。(256用于RC4初始化,10用于字节本身)

具体到业务:

在一台拥有大约100个内核的超级计算机上,是否有可能在20天内执行大约2^135次计算?

(20天是我被解雇的时间限制。我可能只得到8个,也可能得到400+个,但我猜是100个核。)

如果有什么意义的话,我的程序是用Java编写的

在理想的世界中,它围绕着:

2135次运算÷20天÷24小时/天÷60分钟/小时÷60秒/分钟÷100个核=1032次每核每秒运算(Hz/核),假设我的数学没有关闭

您需要1032赫兹的内核,每个时钟只进行一次计算。通常,它需要多个。那是。。。至少可以说,目前还不是很容易到达。如果幸运的话,使用超级计算机所能达到的最佳效果大概是~10GHz=1010Hz/core


(这一切都被忽略了…)这些数字多少有些虚构。他们主要是为了表明自己的观点。为了让它更简单,数学计算过于乐观了

  • 单核每秒可以处理40亿(232)次操作(这是一个非常乐观的数字)

  • 因为每天有86400秒(总计217秒)

  • 和20天(最多25天)

  • 和100芯(四舍五入至27芯)

  • 然后。。。232*217*25*27==2(32+17+5+7)==261次计算。。。因此:

    不可能。一点也不接近。剩下的计算量是如此惊人,我甚至无法理解它到底是什么。抱歉:-)


    (根据以上数据,需要279天……)这是一个有趣的问题,很难正确回答。可伸缩性在大多数情况下都是一种“试一试”的东西

    需要注意的一点是,由于其他因素

    假设您的程序每秒可以比较
    n
    键。因此,理想的(即线性)100核系统每秒将计算
    100n
    密钥。要比较所有键(最坏的情况是,现实值是一半)需要
    (2^135/100n)/86400

    如果
    n
    为1000,则需要5041220025068056982908703122121天,这比一些宇宙年龄估计值长约10亿倍


    所以我要说。。。否:)加密算法是为此类攻击而设计的。此外,Java将是编写此类应用程序时最后选择的语言:宇宙中至少有2^240个原子,因此即使每天计算一次,也不需要一半的原子来计算。再说一次,比尔·盖茨不是说过“谁会需要宇宙中一半以上的原子?”

    人们不知道一个数字有多大

    2^135大约是4e40,好的,43556142965880123231949751266331066368

    假设你有一台能执行1Exaflop的计算机,比我们现在的任何计算机都快得多。因此,如果它能够在每个浮点运算中进行其中一个计算,那么它可以在一秒钟内完成10^18个计算。这仍然需要42秒。每年大约有31536000秒,因此您的小企业仍然需要15年以上的时间

    好的,取决于你和谁交谈,宇宙大约在6000年到130亿年之间


    不管是不是Java,答案都是否定的。(天网还在吗?

    @Mitch它就在那里,有点被掩埋了。我应该把代码移到粘贴箱。“在一台拥有大约100个核的超级计算机上(我可能最终只有8个核,或者我可能最终有400多个核,但我猜是100个核),能在20天内完成大约2^135的计算吗?”2^135听起来有点超出范围,但我必须检查一下,只是为了确定:D谢谢你的帮助如果我同时进行多个计算(线程)呢. 这会改变什么吗?@Ryan:。。。idk,你告诉我。假设每个核心有1万亿个线程。当你把10^32除以1万亿会发生什么?它离10^10有多近…?您将在一个核上进行一次计算,这样将使速度提高最多100倍。静止方式off@Mehrdad我想我太有希望了:P@Ryan阿莫斯-数学不会说谎。这两者之间有什么关系?我们还没有进入进化的第六阶段:“甚至不需要一半”有点轻描淡写(或夸大了?)-)@pst@Dax:1/2将是2^239;)你需要大约2^240*2^-100个原子,假设每个计算1个原子。当然,如果我们能利用宇宙中的每个原子进行计算,他们就能计算出一种从乙醚中产生新原子的方法。所以,是的,我想这并不相关。是的,彩虹表不会生成一整套可能的键,它们通常会从字典/单词列表中生成键,以便存储和查找。WPA通过在加密之前针对SSID散列密钥(这意味着需要为每个SSID生成彩虹表),提供了一些防御措施。感谢您的帮助!我会更深入地研究彩虹表。所以答案是我不应该等这么久才开始这个项目:我应该在30亿年前就开始了。是的,每浪费一秒都会损失更多的计算,所以开始工作吧+1(还有我自己的一点咆哮)数字a