1

我正在寻找一种算法,它是一种单向函数,如哈希函数。该算法接受一个小的输入(几个位,小于 512 位),并将其映射到一个长输出(1K 字节或更多)。你知道这样的算法或函数吗?

4

3 回答 3

4

根据香农定理,除非密钥(或创建密文的过程)对于任何输入都不同,否则您不会通过拥有比纯文本更大的密文来获得任何安全性。即使在这种情况下,您也只需为每个输入分配一个键(或机制),x 否则您违反了函数的定义。因此,如果您应用加密机制 f:X(输入集)-> Y(输出集),则|Y| <= |X|.

所有这一切都表明,如果您的输入小于512位,则通过产生1KB输出您将一无所获。现在,我建议您使用单向函数 wiki 页面上列出的函数之一

于 2013-04-09T07:59:12.003 回答
2

Keccak具有可变长度输出,(尽管未在 SHA-3 中评估),它是“安全声明与输出长度分离。有一个最小输出长度......”并且Skein散列函数的可变输出高达16艾字节

于 2013-04-09T15:56:39.973 回答
0

无论您的原因是什么,您都可以使用不同的算法计算相同小数据的哈希值,然后将这些哈希值连接起来。如果输出不够大,计算散列的散列并附加它们。

正如其他答案所指出的,从安全角度来看,这没有多大意义。

于 2013-04-09T09:59:36.760 回答