Lewati ke konten utama

Membuat nilai UUID v5 deterministik

UUID versi 5 diturunkan dari UUID namespace dan sebuah nama menggunakan SHA-1. Siapa pun yang meng-hash namespace dan nama yang sama akan mendapatkan UUID yang persis sama, sehingga ID dapat dihitung ulang alih-alih disimpan.

Contoh perhitungan

Namespace (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Nama
example.com
Hasil
cfbff0d1-9375-5685-968c-48ce8b15ae17
Namespace (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Nama
Example.com
Hasil
a1feb884-07f5-5a14-8edb-cb659a7fbadc

Cara kerjanya

  • 16 byte namespace digabungkan dengan byte UTF-8 dari nama lalu di-hash dengan SHA-1. 16 byte pertama dari digest menjadi UUID setelah bit versi (5) dan varian ditetapkan.
  • RFC 9562 mendefinisikan namespace untuk nama DNS, URL, OID ISO, dan distinguished name X.500. UUID milik Anda sendiri juga bisa dipakai sebagai namespace pribadi.
  • Nama dibandingkan byte demi byte: huruf besar-kecil, spasi, dan garis miring di akhir mengubah hasil, jadi normalkan nama terlebih dahulu. Karena hasilnya dapat ditebak, jangan pernah memakai UUID v5 sebagai rahasia.
Versi UUID

Hasilkan 1-100 UUID sekaligus

Namespace DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (default)

Nama yang akan di-hash (mis. nama domain, email, dll.)

Tentang UUID

UUID v1: UUID berbasis waktu yang mencakup stempel waktu dan alamat MAC komputer yang menghasilkan UUID. Berguna ketika Anda perlu tahu kapan UUID dibuat.

UUID v4: UUID yang dihasilkan secara acak. Ini adalah versi yang paling umum digunakan dan memberikan keunikan yang baik dengan kebocoran informasi minimal.

UUID v5: UUID berbasis nama menggunakan hashing SHA-1. Dengan namespace dan nama yang sama, Anda akan selalu mendapatkan UUID yang sama. Berguna untuk pembuatan UUID deterministik.

Panduan UUID lainnya