我正在开发一个系统,该系统大量使用假名来向研究人员提供对隐私至关重要的数据。这些假名应具有以下属性:


它们不应包含任何信息(例如创建时间,与其他假名的关系,编码数据等)。
创建唯一的假名应该很容易。
它们应该是人类可读的。这意味着当人们大声读出时,它们应该易于人类进行比较,复制和理解。


我的第一个想法是使用UUID4。它们在(1)和(2)上相当不错,但在(3)上却没那么好。

一种变体是用更宽的字母编码UUID,从而使字符串更短(例如,参见shortuuid)。但是我不确定这是否真正提高了可读性。

我目前正在研究的另一种方法是2005年发表的一篇名为"An optimal code for patient identifiers"的论文,旨在准确解决我的问题。此处描述的算法创建具有30位熵的8个字符的假名。不过,我希望使用更广泛审查的标准。

然后还有git方法:仅显示实际假名的前几个字符。但这意味着假名可能会在一段时间后失去其唯一性。

所以我的问题是:对于人类可读的唯一ID是否有广泛使用的标准?

最佳答案

不知道任何为此广泛使用的标准。这是未广泛使用的:

quin

https://arxiv.org/html/0901.4016

https://github.com/dsw/proquint

一个UUID4(128位)将被转换成8个proquint。如果太多,您可以占用UUID4的后64位(=只需获取64个随机位)。这并不能使其神奇地失去独特性;只会增加发生碰撞的可能性,而碰撞的可能性从一开始就不为零,并且可以通过数学估算来确定碰撞是否仍然可以满足您的需求。

关于standards - UUID的人类可读替代品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49506313/

10-10 17:16