java - 由于 UUID v3 基于 MD5,因此它在为 API 生成代理 key 时是否不安全?

标签 java sql-server rest md5 uuid

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

相关数据是真实来源数据库的副本,我的副本中唯一的标识符是敏感的,不能在 URL 中公开。

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

如果重要的话,数据存储在 SQL Server 数据库中。

问题:由于 UUID v3/5 基于 MD5/SHA-1,因此以这种方式使用它们是否安全?

最佳答案

出于某种原因,版本 3 已被弃用。没有已知的方法(除了暴力破解之外)可以从 UUID 恢复到名称,但 MD5 确实存在问题,并且随着时间的推移,攻击只会变得更好。如果您使用的库尚不支持版本 5,请获取一个支持版本 5 的库。

对于这两个版本,如果进入哈希的数据量很小,那么暴力破解可能是两个版本真正需要考虑的问题。答案是使用更多的输入数据,即足够多的输入数据,以至于不再可能使用暴力破解。确切的选项将取决于您可用的内容以及它的可猜测性

关于java - 由于 UUID v3 基于 MD5,因此它在为 API 生成代理 key 时是否不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53474420/

相关文章:

java - Guice中的嵌套注释方法拦截

java - 如何获取CloudFoundry MySQL连接参数?

java - 不要停止对异常的评估?

java - Java中半结构化数据的贝叶斯分类

c# - 将 SQL 查询更改为 LINQ、asp.net MVC

sql-server - T-SQL 获取给定组的最后一个值

sql-server - 为什么空记录集上的 SUM(...) 返回 NULL 而不是 0?

python - 定期检查 api 是否有新数据的正确方法?

java - REST API - 无法使用 JAXB 转换 XML

java - 是否有用于创建 XHTML 文档的 Java API?