Bahasa Melayu

Alat pembangun · UUID penjana

Bagaimana crypto.getRandomValues Menukar 16 Bait Rawak Menjadi v4 UUID

· Bagaimana ia berfungsi

uuid kriptografi pelayar-apis

Enam belas bait rawak dengan versi dan medan bit varian diserlahkan
Ilustrasi vektor ToolAcre asal

Versi 4 UUID ialah 16 bytes daripada penjana selamat secara kriptografi dengan enam bit ditulis ganti. Siaran ini membawa bait daripada panggilan Web Crypto ke rentetan aksara 36 yang biasa.

ID yang anda perlukan sebelum pelayan menjawab — sebab penjanaan sisi klien muncul dalam bentuk luar talian yang diutamakan, UI optimistik dan import kelompok

Borang luar talian mungkin memerlukan pengecam sebelum pelayan bertindak balas dan UI yang optimis boleh mencipta beberapa objek sekaligus. UUIDv4 direka bentuk untuk dijana secara bebas tanpa pembilang pusat. Ia bukan bukti identiti pengguna atau rahsia yang boleh anda letakkan dengan selamat sebagai ganti pengesahan. Jika pangkalan data anda memerlukan nilai yang diisih mengikut masa penciptaan, ID v4 rawak tidak dipesan; itu adalah keputusan skema yang berasingan dan bukannya alasan untuk melemahkan rawak mereka.

Perkara yang sebenarnya dilakukan crypto.getRandomValues — mengisi tatasusunan ditaip daripada sumber entropi sistem pengendalian, bukan daripada formula JavaScript

crypto.getRandomValues mengisi Uint8Array dengan 16 bytes daripada penjana rawak selamat secara kriptografi platform pelayar. Ia tidak memperoleh nilai daripada Date.now() atau Math.random(). Sistem pengendalian dan pelayar melaksanakan sumber entropi asas, jadi kod JavaScript menerima bait daripada melaksanakan formula nombor rawak itu sendiri. ToolAcre enggan menjana pengecam jika sumber selamatnya tiada.

Mengganti bait 6 dan bait 8 — bagaimana versi nibble menjadi 4 dan bit varian menjadi 10xx, dan mengapa sahaja enam bit hilang

RFC 9562 menerangkan versi nibble dan medan varian. Bermula dengan enam belas bait rawak, tetapkan empat bit tinggi bait 6 kepada binari 0100 (versi 4), dan tetapkan dua bit teratas bait 8 kepada 10 (varian standard). Pelaksanaan menggunakan (byte6 & 0x0f) | 0x40 dan (bait8 & 0x3f) | 0x80. Enam bit ditulis ganti, meninggalkan 122 bit rawak di bawah skema UUIDv4. Bit malar tersebut tidak menjadikan baki bait kurang rawak.

Daripada bait kepada 8-4-4-4-12 — pengekodan heks, keluaran huruf kecil dan peletakan sempang sebagaimana standard mentakrifkannya

Kodkan setiap bait sebagai tepat dua aksara perenambelasan dengan sifar pendahuluan apabila diperlukan. Sisipkan sempang selepas 4, 6, 8 dan 10 bytes, menghasilkan yang biasa 8-4-4-4-12 kumpulan aksara heksadesimal. Rentetan v4 yang sah mempunyai a 4 pada permulaan kumpulan ketiga dan satu daripada 8, 9, a atau b pada permulaan yang keempat. Pemformatan tidak menambah entropi; ia sahaja membuat asas 128-nilai bit saling beroperasi dengan alat yang mengharapkan UUID bentuk teks.

Contoh yang berjaya — satu penimbal 16-bait dikesan melalui penyamaran dan pemformatan kepada rentetan UUID terakhirnya

Jejaki bait ilustrasi 00 11 22 33 44 55 F6 77 38 99 AA BB CC DD EE FF. Menyamarkan F6 pada bait 6 menghasilkan 46; bertopeng 38 pada bait 8 menghasilkan B8. Selepas pemformatan heksadesimal huruf kecil dan sempang hasilnya ialah 00112233-4455-4677-b899-aabbccddeeff. Ini adalah contoh pengajaran yang sengaja ditetapkan, bukan pengecam untuk digunakan semula dalam pengeluaran. Hasilkan yang baru untuk setiap objek sebenar dan bandingkan sendiri versi dan kedudukan varian.

crypto.randomUUID() sebagai pintasan satu panggilan — kaedah yang lebih baharu lakukan untuk anda dan di tempat ia tidak tersedia

Pada asal yang selamat, crypto.randomUUID() melaksanakan penjanaan dan pemformatan v4 dalam satu panggilan. ToolAcre menggunakannya jika tersedia dan sebaliknya kembali ke getRandomValues ​​dengan operasi bit eksplisit di atas. Ketersediaan pelayar berbeza mengikut konteks: rawakUUID dihadkan kepada konteks selamat, manakala getRandomValues ​​mungkin masih wujud pada halaman HTTP LAN. Mana-mana cawangan tidak kembali kepada Math.random semata-mata untuk memastikan butang kelihatan berfungsi.

Perkara ini tidak meliputi — versi berasaskan masa (v1, v7) dan berasaskan nama (v3, v5), yang memerlukan input berbeza daripada bait rawak

Mekanisme ini tidak menerangkan pengecam v1 atau v7 berasaskan masa, pengecam v3/v5 berasaskan nama atau reka letak v8 percubaan. UUID rawak mempunyai kebarangkalian perlanggaran yang sangat rendah dengan rawak bunyi, bukan ketidakmungkinan perlanggaran matematik mutlak. v4 UUID dengan sendirinya tidak boleh digunakan sebagai semakan kawalan akses atau token tetapan semula kata laluan tanpa mengambil kira kerahsiaan, seumur hidup dan kebenaran secara bebas.

Bawa pulang: rawak selamat ialah tugas keseluruhan — penjana ToolAcre UUID diambil daripada pelayar yang sama CSPRNG, jadi apa yang anda salin ialah apa yang akan dihasilkan oleh kod anda

Rawak selamat adalah tugasnya. Penjana ToolAcre UUID menggunakan CSPRNG pelayar, menguatkuasakan versi dan bit varian serta menawarkan semakan bentuk yang baik untuk nilai yang disalin. Bandingkan hasil yang dijana dengan contoh susun atur bait, kemudian gunakan output baharu yang unik sahaja untuk peranan yang sebenarnya diberikan oleh aplikasi anda.