generate V7
Начиная с Kotlin: 2.4
fun generateV7(): Uuid
Генерирует новый случайный экземпляр Uuid версии 7.
Возвращаемый UUID — это основанный на времени сортируемый UUID, соответствующий варианту IETF (вариант 2) и версии 7. В качестве префикса используется временная метка UNIX в миллисекундах, а суффикс генерируется случайным образом. Это позволяет упорядочивать несколько UUID, сгенерированных подряд, по возрастанию и при этом сохранять непредсказуемость будущих значений UUID.
Текущая реализация гарантирует строгую монотонность возвращаемых UUID в течение времени жизни приложения. Монотонность не гарантируется для двух UUID, сгенерированных в отдельных процессах на одном хосте, а также для UUID, сгенерированных на разных хостах. Если было запрошено несколько UUID в один и тот же момент времени, текущая реализация использует метод «счётчик с выделенной битовой длиной фиксированного размера», описанный в RFC-9562, §6.2 «Монотонность и счётчики», чтобы обеспечить строгую монотонность.
Случайная часть UUID создаётся с помощью криптографически стойкого генератора псевдослучайных чисел (CSPRNG), доступного на платформе. Если базовая система не собрала достаточно энтропии, эта функция может блокироваться до тех пор, пока не будет собрано достаточно энтропии и CSPRNG не будет полностью инициализирован. Следует отметить, что генератор псевдослучайных чисел, используемый в целевой платформе Kotlin/WasmWasi, не гарантированно является криптографически стойким. Сведения об API, используемых для создания случайных UUID на каждой поддерживаемой целевой платформе, приведены ниже.
Обратите внимание, что возвращаемый UUID не рекомендуется использовать в криптографических целях. Это связано с тем, что UUID версии 7 имеет частично предсказуемый шаблон битов и использует не более 74 бит энтропии независимо от платформы.
Для создания случайных UUID на каждой из поддерживаемых целевых платформ используются следующие API:
Kotlin/JVM — java.security.SecureRandom
Kotlin/JS — Crypto.getRandomValues()
Kotlin/WasmJs — Crypto.getRandomValues()
Kotlin/WasmWasi — random_get
Kotlin/Native: целевые платформы Linux — getrandom; целевые платформы Apple и Android Native — arc4random_buf; целевые платформы Windows — BCryptGenRandom
Обратите внимание, что базовый API, используемый для создания случайных UUID, может измениться в будущем.
Возвращает
Случайно сгенерированный UUID.
Вызывает исключение
если базовый API завершается с ошибкой. Возможные причины сбоя и рекомендации по его устранению см. в документации соответствующего базового API.
Примеры
import kotlin.test.*
import kotlin.time.Instant
import kotlin.uuid.*
fun main() {
//sampleStart
// Generates a random, unique and strictly ordered uuids each time
val uuid1 = Uuid.generateV7()
val uuid2 = Uuid.generateV7()
val uuid3 = Uuid.generateV7()
println(uuid1 < uuid2) // true
println(uuid1 < uuid3) // true
println(uuid2 < uuid3) // true
//sampleEnd
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.uuid/-uuid/-companion/generate-v7.html