使用一个人的名字创建一个唯一的,不可逆的ID

时间:2019-02-12 08:30:30

标签: encryption cryptography statistics

是否有一种方法(算法)来获取某人的名字(名字和姓氏)并将其转换为唯一的,不可逆的ID?我知道我可以从唯一ID = 1开始,然后添加一个。我想知道是否有一种方法可以使用某人的名字生成ID。

我只是在寻找实现方法的指针,我自己编写代码。

2 个答案:

答案 0 :(得分:0)

您要的内容称为哈希函数。哈希函数将始终为给定的输入产生相同的定长输出。

对于非加密技术而言,SHA256通常是一个不错的选择。它将产生256位输出,并且在大多数标准库中都可以本地使用。

答案 1 :(得分:0)

否。

您说您想从一个名称生成一个不可逆的ID。虽然您可以 从名称生成ID,但它始终是可逆的。这是因为名称中没有足够的信息。

考虑从70亿个名称(即有多少人)中选择任何一个名称,则ID的最大Shannon熵约为32.7位。换句话说,在您尝试了地球上的所有名称之前,大约需要进行2 ^ 32.7次尝试。对于计算机,这很容易。

例如,如果我们要通过使用SHA256哈希创建ID(例如Luke Joshua Park suggests),则可以使用常规的蛮力攻击轻松找到与ID对应的名称。我的笔记本电脑只需要0.5µs即可计算SHA256哈希值。因此,要找到地球上所有人类的ID,如果我使用功能更强大的CPU,我将需要不到一个小时的时间。