通过字符串组合生成UUID

问题描述 投票:0回答:1

我想创建一个 UUID,它应该是以下 4 个字段的组合。

  1. 姓名例如:爱丽丝
  2. SSN 例如:000111000
  3. 出生日期例如:01/01/2022
  4. 客户编号例如:2343546

此 UUID 生成逻辑也可以被其他服务重用,并且如果传递此数据,它应该生成相同的 UUID。

我现在已经尝试使用类似下面的东西。

String input = Name.concat(ssn).concat(dob).concat(CustomerNumber);
byte[] bytes = input.getBytes(StandardCharsets.UTF_8);
return UUID.nameUUIDFromBytes(bytes).toString();

我的问题:

  1. 使用 concat 是一个昂贵的操作吗?我还可以使用哪些其他选项?
  2. 我怎样才能使这个逻辑可重用,以便它也可以被其他服务使用?
java uuid
1个回答
0
投票

这些操作都不应该成为性能问题,除非您需要每秒执行超过 10000000 个操作,或者您在某些门把手硬件上运行它(在这种情况下您无论如何都不应该使用 java)。

有一些事情可以改进,例如使用

StringBuilder
或在知道长度时预分配数组。

一个可能的考虑因素是冲突或可逆性,即考虑到您的 UUID,您可能不希望人们能够找到此人的姓名和 SSN。为此,最好的方法是使用哈希函数,例如 SHA-256。

为了使其可重用,您需要将其放入函数/方法中,并且由于它只需要参数,因此您可以使其

static

© www.soinside.com 2019 - 2024. All rights reserved.