【发布时间】:2013-03-31 12:54:17
【问题描述】:
我正在寻找一种算法,它是一种单向函数,例如哈希函数。该算法接受一个小的输入(几个位,小于 512 位),并将其映射到一个长输出(1K 字节或更多)。你知道这样的算法或函数吗?
【问题讨论】:
-
你复制每一位 10 次... ;-) 不,老实说我看不出有任何理由这样做
标签: algorithm hash cryptography entropy
我正在寻找一种算法,它是一种单向函数,例如哈希函数。该算法接受一个小的输入(几个位,小于 512 位),并将其映射到一个长输出(1K 字节或更多)。你知道这样的算法或函数吗?
【问题讨论】:
标签: algorithm hash cryptography entropy
从Shannon theorem 开始,除非任何输入的密钥(或创建密文的过程)不同,否则您不会通过拥有比纯文本更大的密文来获得任何安全性。即使在这种情况下,您也只需为每个输入分配一个键(或机制)x,否则您违反了函数的定义。因此,如果您应用加密机制 f:X(输入集)-> Y(输出集),则|Y| <= |X|。
所有这一切都表明,如果您的输入小于512 位,则生成1KB 输出将一无所获。现在,我建议您使用one-way function wiki page 中列出的功能之一
【讨论】:
Keccak 具有可变长度输出,(尽管未在 SHA-3 中评估),它是“安全声明与输出长度分离。有一个最小输出长度......”和Skein 哈希函数有可变输出高达16 exabytes
【讨论】:
无论您的原因是什么,您都可以使用不同的算法计算相同小数据的哈希值,然后将这些哈希值连接起来。如果输出不够大,计算散列的散列并附加它们。
正如其他答案所指出的,从安全角度来看,这没有多大意义。
【讨论】: