这个问题听起来很常见,但不知怎的,我找不到能帮助我的东西......
我觉得我缺乏基本的哈希和加密知识.
问题
假设我有一个电话号码(希望是唯一的)用作ID.
但我不想在公共接口中使用我的私人号码作为ID.
我需要的是一种解决方案,它以一种方式混淆字符串,但仍然保持唯一性,所以当其他人使用算法时,他将获得相同的ID.
解决方案(?)
当输入不超过散列输出长度但仍然(几乎)无法反转时,是否存在散列算法以保证唯一性.
使用固定的公钥RSA加密怎么样?输出应该是唯一的,但攻击者必须打破一个密钥才能解密所有数字.听起来不错......
更新(基于答案)
显然我正在寻找具有低冲突概率的加密哈希算法.
现在(我已经睡了一觉)认为通过我可以想到的更多事实:
话虽如此:我可以决定使用哈希.这样,没有人可以立即(不攻击它)使用哪个电话号码.这似乎是重点.
在C#中,我可以对泛型参数设置类型约束,该参数要求泛型类型具有默认的无参数构造函数.我可以用Java做同样的事吗?
在C#中:
public static T SomeMethodThatDoesSomeStuff<T>() where T : class, new()
{
// ... method body ...
}
Run Code Online (Sandbox Code Playgroud)
class和new()约束意味着T必须是可以使用零参数的new运算符调用的类.我对Java泛型的了解很少,我可以extends用来命名一个必需的超类.我可以使用它(或任何其他支持的操作)来实现上述功能吗?