【问题标题】:Validate the unique string generated in the system验证系统中生成的唯一字符串
【发布时间】:2014-07-16 16:28:22
【问题描述】:

我正在生成一个唯一的 id(由使用的框架生成,所以我应该只使用这个 ID,并且框架中没有 API 来检查它是否由框架生成。感谢 RichieHH 指出这一点) Web 应用程序中的每个请求都可以作为另一个请求的一部分返回给系统。现在,我将这些生成的唯一 ID 存储在数据库中,并且对于每个请求,都会发出数据库查询以检查该 ID 是否已经存在(这是当前对唯一 ID 进行验证的方式)。现在,如果我必须验证在请求中发送的 ID 是否由应用程序生成而不使用持久存储,我应该采用哪种方法?

我最初的方法是生成在散列后添加到特定总和的 ID,但这可以在通过模式后识别。

如果有人可以帮助我解决这个问题,并且可以验证应用程序中生成的 uniqueID,那就太好了。谢谢。

【问题讨论】:

  • 既然你是在“检查”,为什么不直接使用底层数据库生成的唯一ID呢?如果您不想这样做,那么这是一个与任何特定语言都没有真正关系的算法问题。你看过 UUID 类吗? docs.oracle.com/javase/7/docs/api/java/util/UUID.html
  • @RichieHH,感谢您立即回复。唯一 ID 由我们在这里使用的框架生成。我必须使用这个但没有其他生成器,这排除了使用 UUID 类。我错过了在描述中更新它,所以会马上添加它。

标签: java string security uniqueidentifier


【解决方案1】:
  1. Use UUID,这是此任务的标准解决方案。您无需验证 UUID,您可以假设它始终是唯一的。
  2. 您可以使用ServerName+Timestamp+some extra。它可能更有利于调试,但安全性较低。

【讨论】:

  • 感谢您的建议。我更新了不使用 UUID 的原因,但目前正在做一些类似于第二种方法的事情,该方法具有由框架生成的唯一 ID 和时间戳。第二种方法与您描述的缺点相同。
  • @user3174464 我没有找到任何不使用 UUID 的正当理由。
  • 我需要验证在另一个请求中发回的唯一 ID,因此如果它是从应用程序生成的,我必须找到一种方法,因为可以在应用程序外部生成唯一 ID。如果我错了,请纠正我。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多