【发布时间】:2013-02-03 19:25:57
【问题描述】:
为了访问我的 Web 服务应用程序中的资源,客户端应用程序需要为每个资源提供唯一的共享密钥。
问题是:SecureRandom 生成的多头对于此目的是否合理安全(例如,针对暴力攻击)?还是应该改用 UUID?
Web 服务通过 HTTPS 运行,我可以保证不会发生冲突(使用 Long 或 UUID)。唯一的问题是 Java 中 Long 的域是否足够大,可以防止通过 HTTPS 进行的详尽攻击。
【问题讨论】:
-
64 位对我来说看起来不是很安全...当然这取决于您要保护的内容。
byte[256]有什么问题? -
这是一个“一段字符串有多长”之类的问题...
-
我同意 64 位看起来有点短。例如,如果您可以创建 32 位的目标并可以进行 32 位的尝试,您可能会遇到冲突(根据您的喜好在两者之间移动位)。 / 为什么是
java.lang.Long?大概是为了避免写一个合适的类,但应该写那个类。 -
嗯,我想“这取决于”是我一直都知道但不想听到的答案。我更改了我的模型以使用字符串 ID,如果我发现发生碰撞或泄漏,它们会呈现出可扩展的状态。目前,由 30 个字符组成的字母数字序列,有效期为两周,应该为我要保护的数据类型提供可接受的安全性。
标签: java long-integer uuid shared-secret