是否有一个特别不可能的SHA1哈希?

时间:2014-05-01 04:23:23

标签: git sha1 sha

我有Map<SHA1, BinaryBlob>。与Git非常相似。

我想把一小部分有限数量的&#34;特别&#34;进入此地图的条目。我希望能够更改二进制blob的值,但仍然可以使用相同的密钥来引用它们。

正确的方法是使用Map<Either<SHA1, SpecialKey>, BinaryBlob>

执行此操作的黑客方式(这是我实际执行此操作的方式)是定义:

SHA1 specialKeyA = 0x00000 ... 00
SHA1 specialKeyB = 0x00000 ... 01

我知道SHA1产生均匀分布的值。但是我想知道是否有星号,如果有几个角落哈希(例如0x00..0xFF...)保证不会发生。

我对目前的设计感到非常安全,但我只是好奇:)

编辑:我已经指望哈希唯一性,所以我觉得非常安全的设计。问题出在好奇心上:是否存在一些SHA1恰好无法生成的值。到目前为止,评论中的人口普查似乎没有......

1 个答案:

答案 0 :(得分:1)

据我所知,SHA1没有00…00的已知前映像(并且00…0100…02或其他“特殊”值都没有。即使它不违反任何安全散列的正式定义,IV也旨在避免这种人类可识别的模式。

我仍然可能会建议不要使用这些值,因为其他人也可能提出使用这些特殊值的想法,例如请参阅this question about a git commit with all zeros。如果它与您完全相同,我会生成一个随机的80位值,例如83a…c3,并将您的计数器附加到它,例如83a…c300…0183a…c300…02等。