Base64 编码的 UUID 是唯一的吗?

Are Base64 encoded UUIDs unique?

这是对

的扩展

如果被编码的字符串保证是唯一的,比如一个UUID,是否也意味着base64编码后的字符串也保证是唯一的?

如果我们考虑以下 Java 示例,

    UUID uuid = UUID.randomUUID();
    ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16])
            .putLong(uuid.getMostSignificantBits())
            .putLong(uuid.getLeastSignificantBits());

    String encodedUUID = Base64.getUrlEncoder()
                  .withoutPadding()
                  .encodeToString(byteBuffer.array());

由于 uuid 是唯一的,这是否意味着 encodedUUID 也将是唯一的?如果是这样,在大量编码 UUID 的情况下发生冲突的可能性有多大?

如果数据是唯一的,则base64编码后也是唯一的。

Base64 编码是编码数据的无损表示。这是相同的数据,只是使用不同的符号表示,以相当高的密度、可打印的方式对其进行编码。

Base64 是双向的,这意味着如果您对唯一的 UUID 进行编码,您将获得一个 base64 字符串,该字符串可以解码为精确的值,在本例中为唯一值。