小编Kni*_*edi的帖子

来自String的不可逆唯一ID

这个问题听起来很常见,但不知怎的,我找不到能帮助我的东西......
我觉得我缺乏基本的哈希和加密知识.

问题
假设我有一个电话号码(希望是唯一的)用作ID.
但我不想在公共接口中使用我的私人号码作为ID.
我需要的是一种解决方案,它以一种方式混淆字符串,但仍然保持唯一性,所以当其他人使用算法时,他将获得相同的ID.

解决方案(?)
当输入不超过散列输出长度但仍然(几乎)无法反转时,是否存在散列算法以保证唯一性.
使用固定的公钥RSA加密怎么样?输出应该是唯一的,但攻击者必须打破一个密钥才能解密所有数字.听起来不错......

更新(基于答案)
显然我正在寻找具有低冲突概率的加密哈希算法.
现在(我已经睡了一觉)认为通过我可以想到的更多事实:

  • 无论如何,我必须处理碰撞.当我使用电话号码作为身份证而无需进一步验证时,任何人都可以说"这是我的".
  • 彩虹表永远是个问题.由于有一个可管理的电话号码,每个人都应该能够从电话号码生成哈希(我甚至不能使用秘密盐).我唯一的可能是使用强化算法和盐,这使得彩虹表我认为是独一无二的.

话虽如此:我可以决定使用哈希.这样,没有人可以立即(不攻击它)使用哪个电话号码.这似乎是重点.

string encryption hash unique

7
推荐指数
1
解决办法
1436
查看次数

Java泛型约束需要像C#这样的默认构造函数

在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用来命名一个必需的超类.我可以使用它(或任何其他支持的操作)来实现上述功能吗?

java generics

4
推荐指数
1
解决办法
3614
查看次数

标签 统计

encryption ×1

generics ×1

hash ×1

java ×1

string ×1

unique ×1