Rumah > Artikel > hujung hadapan web > Membina Penjana Frasa Benih Selamat anda sendiri
Kod yang disebut tersedia dalam Github saya
Dalam catatan sebelum ini saya melakukan NodeJs Vesion of Seed Frasa Generator, di sini - kami akan mencipta versi penyemak imbasnya.
Sebagai pembangun, kami sering menghadapi cabaran yang memerlukan kami berfikir di luar konsep pengaturcaraan asas. Hari ini, saya ingin berkongsi pengalaman saya dalam membina penjana frasa benih yang selamat - alat penting dalam dunia mata wang kripto dan teknologi blockchain. Projek ini mengajar saya pelajaran berharga tentang kriptografi, interaksi pengguna dan kepentingan rawak dalam aplikasi keselamatan.
Apabila menjana frasa benih, kualiti rawak adalah diutamakan. Lama dahulu, saya menggunakan JavaScript's Math.random(), tetapi saya segera menyedari bahawa ini tidak cukup selamat untuk tujuan kriptografi. Di sinilah saya mendarat:
function generateCustomRandomBytes(byteLength, mouseMoves) { const customBytes = new Uint8Array(byteLength); window.crypto.getRandomValues(customBytes); const mouseHash = new Uint32Array(mouseMoves); for (let i = 0; i < byteLength; i++) { customBytes[i] ^= mouseHash[i % mouseHash.length] & 0xFF; } return customBytes; }
Fungsi ini menggabungkan nilai rawak selamat secara kriptografi daripada window.crypto.getRandomValues() dengan entropi yang dijana pengguna daripada pergerakan tetikus. Operasi XOR memastikan kedua-dua sumber menyumbang kepada rawak akhir.
Saya memutuskan untuk melibatkan pengguna dalam proses penjanaan rawak. Dengan menjejaki pergerakan tetikus, kami bukan sahaja meningkatkan entropi tetapi juga melibatkan pengguna, menjadikan mereka peserta aktif dalam proses keselamatan.
Untuk memastikan pengguna mendapat maklumat dan terlibat, saya melaksanakan bar kemajuan yang mencerminkan pergerakan tetikus sebenar dan bukannya masa berlalu:
function updateProgressBar() { const progress = Math.min((mouseMoves.length / 3) / requiredMoves * 100, 100); document.getElementById('progressBar').style.width = progress + '%'; if (progress >= 100 && collecting) { stopRandomCollection(); } else if (collecting) { requestAnimationFrame(updateProgressBar); } }
Pendekatan ini memberikan maklum balas masa nyata, menggalakkan pengguna menggerakkan tetikus mereka sehingga entropi yang mencukupi dikumpulkan.
Satu pengajaran penting ialah kepentingan melindungi data sensitif. Pada mulanya, saya menyimpan data pergerakan tetikus dalam pembolehubah global, yang berpotensi boleh diakses oleh skrip berniat jahat. Saya menyelesaikannya dengan menggunakan penutupan:
(function() { let mouseMoves = []; // ... other variables and functions ... function stopRandomCollection() { // ... other code ... generateSeedPhrase(mouseMoves); mouseMoves = []; // Clear sensitive data after use } // ... rest of the code ... })();
Pendekatan ini mengekalkan data sensitif dalam kapsul dan tidak boleh diakses daripada skop global.
Salah satu aspek yang paling kritikal dalam menggunakan penjana frasa benih ialah memastikan proses di luar talian dan selamat sepenuhnya. Berikut ialah panduan langkah demi langkah tentang cara menjalankan kod ini dengan selamat:
Sebelum meneruskan, putuskan sambungan komputer anda daripada Internet. Ini memastikan tiada data boleh dihantar semasa proses penjanaan frasa benih.
Jalankan Fail dalam Penyemak Imbas Anda:
Klik dua kali fail .html yang disimpan untuk membukanya dalam penyemak imbas web lalai anda. Penjana frasa benih kini sepatutnya berjalan secara setempat pada mesin anda.
Jana Frasa Benih Anda:
Ikut arahan pada skrin untuk menjana frasa benih anda.
Simpan Frasa Benih Anda dengan Selamat:
Setelah dijana, tuliskan frasa benih anda di atas kertas. Jangan sekali-kali menyimpannya secara digital.
Selepas anda merakam frasa benih anda dengan selamat, tutup penyemak imbas dan padamkan fail .html.
Menjalankan kod ini di luar talian adalah penting untuk beberapa sebab:
Keselamatan: Ia menghalang sebarang kemungkinan penghantaran frasa benih anda melalui Internet.
Privasi: Ia memastikan tiada skrip atau penjejak pihak ketiga boleh mengganggu proses.
Integriti: Ia menjamin bahawa kod berjalan tepat seperti yang dimaksudkan, tanpa sebarang pengubahsuaian luaran.
Ingat: Frasa benih anda ialah kunci kepada aset digital anda. Sentiasa mengutamakan keselamatan semasa menjana dan menyimpannya. Menjalankan penjana ini di luar talian ialah langkah kritikal dalam melindungi aset anda.
Membina penjana frasa benih yang selamat adalah lebih daripada sekadar menulis kod. Ini tentang memahami prinsip kriptografi, menghargai interaksi pengguna dan sentiasa mengutamakan keselamatan. Sebagai pembangun, projek seperti ini mendorong kami untuk berfikir secara kritis tentang setiap baris kod yang kami tulis dan potensi implikasinya.
Berikut ialah Pautan ke Github - isi percuma untuk mengklon
Atas ialah kandungan terperinci Membina Penjana Frasa Benih Selamat anda sendiri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!