Существует один метод, который будет работать независимо от предостережений спецификации UUID.Поскольку UUID сам по себе предназначен для того, чтобы быть глобально уникальным, защищенный хэш, созданный из него с использованием правильного алгоритма, по крайней мере, с тем же битовым размером, будет иметь те же свойства.За исключением того, что безопасный хеш будет иметь энтропию через хеш-значение вместо определенных местоположений.
Например, вы можете сделать:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(uuid.toString().getBytes(StandardCharsets.UTF_8));
И затем вы берете столько бит изхеш, как вам нужно, и преобразовать их обратно в строку.
Хотя это односторонняя функция;чтобы быстро и эффективно отобразить его обратно в UUID, вам необходимо вести таблицу сопоставления.(Конечно, вы можете проверить, соответствует ли UUID более короткому коду, выполнив однонаправленный хэш для UUID снова)
Однако, если вы хотите извлечь несмежную часть из UUID, вы быесть такая же проблема.