【发布时间】:2011-04-30 04:11:51
【问题描述】:
有没有一个好的算法呢?经过大量搜索后,我无法找到任何确凿的答案。
基本上,在收集有关其用户的各种数据的系统中,每个用户都由一个 64 位的唯一 ID 标识。此 ID 用作数据集的主键,该数据集可能包括从该用户收集的任何数量的数据。照原样,这很好用,因为 ID 已经是唯一的,但是出于法律原因,我需要以无法将它们链接回实际人的方式对 ID 进行哈希处理。但同时需要保证ID的唯一性。
显然,由于值是唯一的,因此可以对所使用的算法进行逆向工程。但我不太确定它是 100% 牢不可破在这里是一个很大的问题,而不是让它成为一个问题,所以没有一种简单的方法来扭转它
谢谢
【问题讨论】:
-
你想要的是完美的散列函数,将输入集的所有成员映射到另一个固定长度集的不同成员。这是不可能的。
-
@Andrey:我认为输入集和结果集大小相同,完美的散列完全可能。
-
这是为了信用卡合规吗?我认为您需要更具体地了解规则,并描述在处理哪些数据位时谁不应该能够反转哪些映射。
-
@DeadMG 你可能是对的,但哈希也应该是不可逆的。
-
@Andrey:我不认为完美的哈希值在现实中一定是可逆的。
标签: c++ encryption hash