如果我使用比数据更大的字节大小的哈希算法(例如sha-256)对大小受限的相似数据(例如社会安全号码)进行哈希,那么哈希是否保证与原始数据具有相同的唯一性水平?
如果我使用比数据更大的字节大小的哈希算法(例如sha-256)对大小受限的相似数据(例如社会安全号码)进行哈希,那么哈希是否保证与原始数据具有相同的唯一性水平?
您可以创建一个自定义哈希,以确保唯一性。对于已知域中的数据(例如社会安全号码),这个过程相对简单。
如果您的目标哈希值实际上比正在哈希的内容具有更多的位数,则哈希将简单地将输入值映射到可用输出值之一。这将是从输入值作为多字节整数到输出作为多字节整数的简单线性映射。
当您的目标哈希值比正在哈希的内容少时,就无法保证唯一性。
其他人已经指出,碰撞不应该是一个问题;这就是加密安全哈希函数的全部意义。我想补充一下以下内容:
如果您正在使用像SHA这样的加密哈希函数,那么简短的答案是肯定的。
加密安全哈希函数的一个关键特征是,无论输入是什么,你都可以毫无疑虑地安全免于碰撞。这也适用于比输出大小更短的输入,这与具有较小熵的较长消息相同。因此,您可以使用SHA-2而不必担心碰撞。
1 -
这一部分,除非你想要表达没有碰撞的概率。顺便问一下,你能给我们提供这个公式的来源吗? - Zoltán