由于UUID v3基于MD5,因此会不安全地为API生成代理密钥吗?

时间:2018-11-26 03:26:48

标签: java sql-server rest md5 uuid

背景: 我想在数据库中生成代理键/备用键,以便可以公开公开它们作为API端点中的资源标识符,如下所示:GET /resources/{id}

有问题的数据是真实来源数据库的副本,并且我副本中的唯一标识符是敏感的,无法在URL中公开。

因此,我想从现有数据中生成一个新的但可复制的标识符,我正在考虑使用UUID v3。 (或v5,但我没有看到任何Java官方实现)如果必须重新创建副本,则可以复制,那么可以确定我复制了相同的标识符。

如果很重要,数据将存储在SQL Server数据库中。

问题:由于UUID v3 / 5基于MD5 / SHA-1,因此可以安全使用吗?

1 个答案:

答案 0 :(得分:1)

不建议使用版本3。没有任何已知的方法(除了蛮力之外)可以从UUID取回名称,但是MD5确实存在问题,并且随着时间的推移攻击只会变得更好。如果您使用的库尚不支持版本5,请获取支持的版本。

对于它们两个而言,如果进入哈希的数据量很小,那么对于这两个版本,蛮力可能是一个真正的问题。答案是使用更多的输入数据,即不再使用蛮力。确切的选项将取决于您所提供的内容以及它的可猜测性