【问题标题】:One way cryptographic hashing of a number ensuring each result is unique一种数字的加密散列方法,确保每个结果都是唯一的
【发布时间】:2011-04-30 04:11:51
【问题描述】:

有没有一个好的算法呢?经过大量搜索后,我无法找到任何确凿的答案。

基本上,在收集有关其用户的各种数据的系统中,每个用户都由一个 64 位的唯一 ID 标识。此 ID 用作数据集的主键,该数据集可能包括从该用户收集的任何数量的数据。照原样,这很好用,因为 ID 已经是唯一的,但是出于法律原因,我需要以无法将它们链接回实际人的方式对 ID 进行哈希处理。但同时需要保证ID的唯一性。

显然,由于值是唯一的,因此可以对所使用的算法进行逆向工程。但我不太确定它是 100% 牢不可破在这里是一个很大的问题,而不是让它成为一个问题,所以没有一种简单的方法来扭转它

谢谢

【问题讨论】:

  • 你想要的是完美的散列函数,将输入集的所有成员映射到另一个固定长度集的不同成员。这是不可能的。
  • @Andrey:我认为输入集和结果集大小相同,完美的散列完全可能。
  • 这是为了信用卡合规吗?我认为您需要更具体地了解规则,并描述在处理哪些数据位时谁不应该能够反转哪些映射。
  • @DeadMG 你可能是对的,但哈希也应该是不可逆的。
  • @Andrey:我不认为完美的哈希值在现实中一定是可逆的。

标签: c++ encryption hash


【解决方案1】:

为每个 ID 生成一个唯一的随机 ID 并将其存储为用户信息的一部分。

然后你可以从一个 ID 得到哈希。反过来在计算上也是可能的(因为您必须扫描整个密钥空间),但过于困难和耗时。

【讨论】:

    【解决方案2】:

    Unique ID 需要作为主键有什么原因吗?可能您可以使用其他一些主键(id 的哈希)并存储使用已知密钥加密的加密主用户名。

    据我所知,哈希值无法反转

    【讨论】:

    • 唯一 ID 是与用户相关的唯一唯一信息,用户名可以是用户随时选择的任何内容,并且可以更改,因为它只是一个显示名称。
    猜你喜欢
    • 2014-10-17
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2019-12-12
    相关资源
    最近更新 更多