Spec-Zone.ru › Kotlin 2

generateV7

kotlin-stdlib/kotlin.uuid/Uuid/Companion/generateV7

Начиная с Kotlin: 2.4

@ExperimentalUuidApi
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.

Вызывает исключение

RuntimeException

если базовый 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API