这个问题听起来很普遍,但不知何故我找不到可以帮助我的东西......
我觉得我缺乏基本的散列和加密知识。
问题
假设我有一个电话号码(希望是唯一的并且)用作 ID。
但我不想在公共接口中使用我的私人号码作为 ID。
我需要的是一种以一种方式混淆字符串但仍保持唯一性的解决方案,因此当其他人使用该算法时,他将获得相同的 ID。
解决方案(?)
当输入不超过散列输出长度但仍然(几乎)无法反转时,是否有散列算法保证唯一性。
使用固定公钥 RSA 加密怎么样?输出应该是唯一的,但攻击者必须破解一个密钥来解密所有数字。听起来是个坏主意……
更新(基于答案)
显然我正在寻找具有低冲突概率的加密哈希算法。
现在(我已经睡了一些觉并且)认为通过我可以想到的更多事实:
- 无论如何,我必须处理碰撞。当我在没有进一步验证的情况下使用电话号码作为 ID 时,任何人都可以说“这是我的”。
- 彩虹桌永远是个问题。由于电话号码的数量是可控的,并且每个人都应该能够从电话号码生成哈希(我什至不能使用秘密盐)。我唯一的可能性是使用强化算法和盐,这使得彩虹表我认为是独一无二的。
话虽如此:我可以决定使用哈希。这样,没有人可以立即(不攻击它)知道使用了哪个电话号码。这似乎是重点。