这个问题似乎很常见,但是我却找不到任何有帮助的解决方案...
我觉得我缺乏基本的哈希和加密知识。 问题
假设我有一个电话号码,作为ID使用(希望它是唯一的)。 但是我不想在公共接口中使用我的私人号码作为ID。 我需要的是一种解决方案,可以将字符串混淆一种方式,但仍保持唯一性,因此当其他人使用算法时,他将获得相同的ID。 解决方案(?)
是否有一种哈希算法,在输入不超过哈希输出长度的情况下保证唯一性,但仍然(几乎)不可能反转。 使用固定的公钥RSA加密呢?输出应该是唯一的,但攻击者必须破解单个密钥才能解密所有数字。听起来像个坏主意... 更新(根据答案)
显然我正在寻找一个具有低碰撞概率的密码哈希算法。 现在(我已经睡了一会儿并且)认真思考了一下还有一些事实:
我觉得我缺乏基本的哈希和加密知识。 问题
假设我有一个电话号码,作为ID使用(希望它是唯一的)。 但是我不想在公共接口中使用我的私人号码作为ID。 我需要的是一种解决方案,可以将字符串混淆一种方式,但仍保持唯一性,因此当其他人使用算法时,他将获得相同的ID。 解决方案(?)
是否有一种哈希算法,在输入不超过哈希输出长度的情况下保证唯一性,但仍然(几乎)不可能反转。 使用固定的公钥RSA加密呢?输出应该是唯一的,但攻击者必须破解单个密钥才能解密所有数字。听起来像个坏主意... 更新(根据答案)
显然我正在寻找一个具有低碰撞概率的密码哈希算法。 现在(我已经睡了一会儿并且)认真思考了一下还有一些事实:
- 无论如何我都要处理碰撞。当我使用电话号码作为ID而没有进一步的验证时,任何人都可以声明“这是我的”。
- 彩虹表将永远是一个问题。由于电话号码的数量可控且每个人都应该能够从电话号码生成哈希值(我甚至不能使用秘密盐)。我唯一的可能性是使用一种强大的算法和使彩虹表唯一的盐才行。
说了这么多,我可以决定使用哈希。这样,没有人可以立即确定使用的电话号码是哪个,除非对其进行攻击。这似乎就是整个问题的关键所在。