java - 通过 UUID 生成密码重置 token

标签 java base64 uuid

我正在寻找一种机制来生成随机唯一字母数字 key 以重置用户密码。

我在这个方向上看了很多,但看起来这东西不是很明显。

我试过类似的东西:

new String(encodeBase64URLSafe(UUID.randomUUID()));

但在阅读了以下文章后:Is UUID.randomUUID() suitable for use as a one-time password?看起来这种方式并不完全正确。

如果您能回答以下问题,我们将不胜感激:

  1. 使用 UUID 生成此类 token 的安全方法是什么?
  2. 我们是否需要将 UUID 字符串转换为 base64 以获得安全的 URL,或者从生成的字符串中删除破折号就足够了?
  3. 在此类目的中使用此链接中的机制是否正确 How to generate a random alpha-numeric string? ,为什么?

最佳答案

  1. 使用 UUID 是安全可靠的。链接的文章只是说 UUID 对于这种安全性来说可能有点太多了。但是好吧……如果你“太”安全,没有人会责怪你。

  2. UUID 只是字母数字字符和破折号。所以如果你需要把它放在一个查询字符串或一个 URL 中,你没有什么可以逃避的。如果需要,您可以删除破折号以节省一些空间。但这不是必需的。

  3. 这个机制也是安全的。两者(UUID 和这个)都可以工作。

对于这种安全性,您所要做的就是确保您的 token 是随机生成的(即使是部分生成的)。

关于java - 通过 UUID 生成密码重置 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31244343/

相关文章:

typescript - Nativescript 中的 Base-64 插件

android - 将 uuid.h 包含到 Android NDK 项目中

c - 将 UUID 结构表示为 char uuid[128]

c++ - rpcrt4.dll 是否是开源/免费库?我可以将该库捆绑到我的应用程序吗

java - 使用 java matcher 类时出现非法状态异常

java - 当表单被 JavaScript 禁用时,JSF 表单不会被提交

Dart 从 base64 转换为 HEX

Java - DataInputStream readUTF 返回 EOFException

java - 如何在特定条件下拆分字符串

delphi - 在 TThread 中将 Jpeg 保存为 base64