【发布时间】:2012-09-17 08:46:53
【问题描述】:
我正在实现一些使用可变长度 id 的程序。这些 id 标识一条消息并发送到将执行某些操作(与问题无关)的代理。但是,代理中此 ID 的最大长度为 24 个字节。我正在考虑使用 SHA 对 id 进行哈希处理(在发送到代理之前)并删除一些字节,直到它只得到 24 个字节。
但是,我想知道这会增加多少碰撞。所以这就是我到目前为止得到的:
我发现对于“完美”哈希,我们有公式 p^2 / 2^n+1 来描述冲突的概率,其中 p 是消息的数量,n 是消息的大小(以位为单位)。这是我的问题开始的地方。我假设从最终哈希中删除一些字节,函数仍然保持“完美”,我仍然可以使用相同的公式。所以假设我得到:
5160^2 / 2^192 + 1 = 2.12x10^-51
其中 5160 是消息的选择数,192 基本上是 24 字节中的位数。
我的问题:
我的假设正确吗?通过删除一些字节,哈希是否保持“完美”。
如果是这样,并且由于概率非常小,我应该删除哪些字节?最重要还是最不重要?这真的很重要吗?
PS:欢迎任何其他达到相同结果的建议。谢谢。
【问题讨论】:
标签: hash cryptography sha