是否有一种方法(算法)来获取某人的名字(名字和姓氏)并将其转换为唯一的,不可逆的ID?我知道我可以从唯一ID = 1开始,然后添加一个。我想知道是否有一种方法可以使用某人的名字生成ID。
我只是在寻找实现方法的指针,我自己编写代码。
答案 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,我将需要不到一个小时的时间。