需要一个非常快速的一对一算法,可能是加密

Eya*_*yal 4 hardware encryption cryptography

我需要一个非常非常快速的一对一算法.该算法不需要是牢不可破的.合理的强度足够但它必须闪电般快速.我将在硬件中实现它.区域也是一个问题,所以它不应该使用太多的逻辑.

它应该是一个函数f_N(x),其输入是一个N位数,其输出是一个N位数.N是常数,可能在20-70之间.该功能必须是一对一的.(即可逆,意味着解密是可能的.解密速度无关紧要.)

我需要在3ns以下加密,每秒大约333M输入.例如,DES每秒大约需要50Mbits.我每秒需要333M 输入.

到目前为止,我已经使用了大约6轮的Feistel密码.这似乎需要大约3ns.

建议?

更多笔记

有一些问题所以我会解释.我需要将密钥放入哈希表.标准方法是对输入键进行哈希处理,并将结果用作表的索引.表中的每一行都必须存储原始密钥. 信息理论告诉我们,表中的行实际上并不需要一样宽的输入键,而是宽的输入键的位数在表的地址.例如:

  • 输入:x(N位)
  • 哈希:x%128(8位)
  • 验证者:floor(x/128)(N-8位)

在CPU上整数通常是相同的宽度是愚蠢的,但我在硬件中这样做.

x%128是一个易于破解的哈希.实际上,如果输入键仅在前几位中有所不同,那么您将在意外时打破哈希.我想要一个不会在事故中被打破的哈希,甚至可能难以故意破坏.我也试过LFSR.LFSR很快但两个相等长度的LFSR生成线性相关的哈希结果.(如果f(x)和g(x)给出两个不同多项式的相同散列,则f(x + 1)和g(x + 1)很容易相关.)

因此,我需要一个具有N位输入和V位,H位输出(V + H = N)的函数,其中很难找到两个长度为N的输入,这样两者都将输出相同的H.加密适合于因为它使输出留下与输入相同的长度,并且很难反转.加密以外的东西也可能有用,虽然看起来我想要的几乎就是加密的定义.

很抱歉没有解释所有这些.希望这能澄清事情.

And*_*are 5

我想知道你是否不关心加密的强度,那么也许你根本不需要加密.在大多数的加密算法的重要组成部分,是它的力量.如果加密很弱,那么首先加密就没有任何好处.

  • 我完全不同意安德鲁.加密总是在努力(CPU时间,密钥分配等)和强度之间进行权衡.根据工程问题,人们可能想要一个非常强大的算法,其中cpu时间不是一个因素,或者是非常快但不是很强的算法. (2认同)