我想创建一个 UUID,它应该是以下 4 个字段的组合。
此 UUID 生成逻辑也可以被其他服务重用,并且如果传递此数据,它应该生成相同的 UUID。
我现在已经尝试使用类似下面的东西。
String input = Name.concat(ssn).concat(dob).concat(CustomerNumber);
byte[] bytes = input.getBytes(StandardCharsets.UTF_8);
return UUID.nameUUIDFromBytes(bytes).toString();
我的问题:
这些操作都不应该成为性能问题,除非您需要每秒执行超过 10000000 个操作,或者您在某些门把手硬件上运行它(在这种情况下您无论如何都不应该使用 java)。
有一些事情可以改进,例如使用
StringBuilder
或在知道长度时预分配数组。
一个可能的考虑因素是冲突或可逆性,即考虑到您的 UUID,您可能不希望人们能够找到此人的姓名和 SSN。为此,最好的方法是使用哈希函数,例如 SHA-256。
为了使其可重用,您需要将其放入函数/方法中,并且由于它只需要参数,因此您可以使其
static
。