distributed.net OGR项目

目前,OGR代码基于最初的OGR-21工作.有一个新版本(GARSP 6.00)可用,并进行了一些进一步的优化,但我还没有把代码合并进去。

因为即将到来的DES竞赛正在消耗distributed.net的其余部分目前,我们不会看到OGR项目在一段时间后开始地-ii已完成。

戈隆布统治者到底是什么?

Golomb标尺是一种沿着一条线放置标记的方法,以便每对标记测量独特的线性距离。这是一把带有五个标记的Golomb尺子:

| |     |         |   |0 1     4         9   11

标记下方的数字是与左边缘的距离。这个的长度这把尺子是11号,正好是两把最短的尺子之一,上面有五个标记。另一把尺子在位置0、3、4、9和11处有标记。(这两个标尺0、2、7、10、11和0、2、7、8、11的镜像也是最佳Golomb统治者。通常只提到每个镜像对中的一个。)

你可以写下所有标记对的表格,检查上面的标尺是否确实是Golomb以及它们各自的距离:

标记1标记2距离-----  -----  --------0      1       10      4       40      9       90      11      111 4 31      9       81      11      104      9       54      11      79      11      2

请注意,第三列中没有重复的距离。也没有距离6,但这没关系,因为Golomb统治者不必测量每个距离,只有不同的距离。

“优化”Golomb统治者的目标是使其尽可能短,而不复制任何测量距离。上面的两个5标记标尺是最佳的。

Golomb统治者的特点通常是他们之间的差异,而不是如上所述的绝对距离图表。所以上面的标尺应该是1-3-5-2(有时写为0-1-3-5-2,但前导的零经常会掉下来)。

目前最著名的21标记标尺如下:

2-22-32-21-5-1-12-34-15-35-7-9-60-10-20-8-3-14-19-4

詹姆斯·希勒(James B.Shearer)编制了一份列表属于所有最著名的哥伦布统治者,最高可达150马克。如果要比较标尺,请注意James’页面是上面那个页面的镜像。

OGR搜索的工作原理

OGR搜索代码使用的方法是深度优先递归树遍历。以下是描述无需优化的穷举树遍历。

在每个阶段,一个新的标记是在标尺末端加了一段距离。如果此标记导致测量重复距离,则标记为向右移动一个单位,然后再次检查。如果标记向右移得太远,我们可能无法适应剩余长度中的下一个标记(记住我们已经知道最著名的标尺的长度),然后搜索回溯到上一个级别。如果新放置的标记满足Golomb-ness要求,则继续搜索沿着尺子的下一个标记。

最重要的优化是放置“下一个”标记距离表中,我们不需要实际检查每个新标记的位置。相反,位图告诉我们新标记的位置可以放置已经满足Golombness要求的位置。

另一个重要的优化是决定当前标尺是否过长。通过检测到目前为止,尺子不可能是比当前最著名的尺子短的尺子的一部分,我们可以消除很多不必要的搜索。

OGR和RC5/DES比较

搜索最优Golomb标尺的过程与搜索有所不同用于加密密钥。下表比较了这两个项目的各个方面。

加密密钥最佳Golomb标尺
密钥未知,但为已知存在. 一把最著名的尺子在任何给定的长度上都是已知的。无担保会找到更好的。
每个工作单元键块,是固定数量的键。 每个工作单元尺头,包含必须检查的可变数量的“节点”。
加密密钥需要完全一样每次要检查的CPU周期数。 OGR“节点”计数是树遍历中遇到的叶节点数。每个节点的CPU周期数为不是常数.
给定的计算机将总是检查相同数量的键/秒(忽略由于CPU可能正在进行的其他工作而产生的变化)。 给定计算机每秒节点数的性能将略有不同取决于当前正在处理的存根。
只需搜索密钥空间直到找到钥匙。我们知道只有一把正确的钥匙。 规则空间必须完全搜索虽然我们可能会在中途发现一个较短的戈隆姆统治者,但可能还有一些较短的统治者尚未找到。
现金奖品用于查找正确的加密密钥。 有(当前)没有奖品找到新的最佳Golomb标尺。

格雷格·休吉尔<greg@hewgill.com>