Alat pembangun · SHA kalkulator cincang
Bagaimana SubtleCrypto.digest Mengira SHA-256 Hash dalam Pelayar
· Bagaimana ia berfungsi
sha-256 kriptografi pelayar-apis
Setiap pelayar moden boleh mencincang bait secara asli melalui Web Crypto. Siaran ini mengikuti satu rentetan daripada TextEncoder melalui crypto.subtle.digest kepada hex digest dan menerangkan kekangan setiap langkah.
Cincang tanpa pemasangan npm — situasi di mana intisari asli mengalahkan perpustakaan yang digabungkan
Anda boleh mengira ringkasan untuk nilai teks pendek tanpa memasang pakej pencincangan atau menyiarkan data ke tapak web cincang jauh. Pelayar mendedahkan crypto.subtle.digest pada asal selamat. Cincang ialah cap jari panjang tetap yang menentukan bagi bait; ia tidak menyembunyikan input atau membuktikan siapa yang membekalkannya. ToolAcre menggunakan pelaksanaan pelayar daripada menghantar algoritma SHA tulisan tangan dan memastikan rentetan dicincang dalam tab.
Teks bukan bait — mengekodkan input dengan TextEncoder kepada UTF-8 sebelum pencincangan dan sebab langkah ini menentukan jawapan
Teks "kafe" dan bait yang dimasukkan ke dalam cincang bukanlah jenis objek yang sama. TextEncoder memetakan rentetan kepada UTF-8 bait (63 61 66 C3 A9 untuk kafe), manakala penukaran Latin-1 yang naif akan menggunakan E9 untuk aksara akhir dan menghasilkan ringkasan yang berbeza. Teks yang serupa secara visual boleh mempunyai bentuk normalisasi Unicode yang berbeza. Bersetuju tentang pengekodan dan penormalan sebelum membandingkan cincang merentas JavaScript, CLI dan pelayan. Mod teks ToolAcre secara eksplisit melaksanakan penukaran UTF-8 sebelum pencincangan.
Panggilan ringkasan — crypto.subtle.digest dengan nama algoritma dan ArrayBuffer, dan sebab ia mengembalikan janji
crypto.subtle.digest("SHA-256", bait) mengembalikan Janji kerana kerja kriptografi mungkin tidak segerak; tunggu sebelum membaca output. Kaedah ini mengambil keseluruhan penimbal input dan bukannya lelaran penstriman. SHA-256 mengeluarkan 256 bits (32 bytes) tidak kira sama ada input mempunyai tiga aksara atau tiga juta. Sekatan konteks selamat bermakna HTTPS atau localhost diperlukan untuk SubtleCrypto API dan alat melaporkan ketiadaannya dan bukannya mencipta sandaran.
Daripada ArrayBuffer kepada hex — menukar bait hasil menjadi rentetan aksara 64 yang dikenali orang
Janji diselesaikan kepada ArrayBuffer bait, bukan rentetan biasa digit heks. Tukar setiap bait kepada dua asas-16 aksara dengan sifar pendahuluan seperti yang diperlukan, menghasilkan tepat 64 aksara kecil untuk SHA-256. Perwakilan heks ini menggandakan panjang 32 bytes, tetapi tidak mengubah ringkasan. Base64 boleh mewakili 32 bytes yang sama dengan lebih padat; perbandingan sahaja masuk akal selepas mengesahkan padanan algoritma, pengekodan input dan perwakilan output.
Contoh yang berjaya — pencincangan rentetan pendek langkah demi langkah, menunjukkan bait pada setiap peringkat
Untuk teks ASCII abc, UTF-8 menghasilkan bait 61 62 63. SHA-256 daripada bait tepat tersebut ialah ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Uji ini dalam ToolAcre dan satu lagi pelaksanaan cincang yang dipercayai: menukar abc kepada abc diikuti dengan baris baharu memberikan hasil yang berbeza. Jika output berbeza, periksa ruang kosong tersembunyi dan pengekodan bait sebelum mengesyaki primitif kriptografi. Ringkasan yang dipaparkan ialah vektor ujian yang boleh dihasilkan semula, bukan dakwaan bahawa abc adalah rahsia.
Konteks selamat — sebab crypto.subtle sahaja tersedia pada HTTPS dan localhost
crypto.subtle ialah konteks selamat API. Halaman HTTPS pengeluaran dan halaman pembangunan localhost secara amnya mendedahkannya; halaman HTTP jauh tidak selamat biasa mungkin tidak. Alat ini juga memerlukan memori yang mencukupi untuk menyimpan input dan output. Apabila Web Crypto tidak tersedia, bertukar secara senyap kepada cincangan JavaScript yang belum disemak akan menjadikan hasil sensitif keselamatan bergantung pada pelaksanaan yang berbeza. Gagal dengan jelas dan sebaliknya pilih persekitaran yang selamat.
Perkara ini tidak meliputi — pencincangan berkunci (HMAC) dan pencincangan tambahan bagi input yang sangat besar, yang ringkasan satu pukulan API tidak disediakan
Ringkasan satu pukulan API bukanlah pencincangan tambahan untuk fail besar. SHA-256 bukan skim storan kata laluan: cincang tanpa garam yang pantas menjadikan tekaan murah, jadi storan kata laluan memerlukan KDF yang direka khas, bergaram, dan mahal. SHA-1 mungkin dipaparkan untuk kebolehoperasian warisan, tetapi rintangan perlanggarannya rosak dan ia bukan pilihan yang baik untuk sistem integriti atau tandatangan baharu. HMAC ialah pengesahan berkunci, bukan operasi yang sama seperti mencerna bait yang tidak disahkan.
Bawa pulang: pelayar sudah mempunyai fungsi cincang — kalkulator cincang ToolAcre SHA menggunakan betul-betul API ini, jadi outputnya adalah milik pelayar sendiri
Pelayar sudah menyediakan SHA-256: kod teks sebagai bait, tunggu ringkasan, kemudian formatkan hasilnya untuk perbandingan. ToolAcre SHA kalkulator cincang mengikut laluan itu untuk menampal teks dan label SHA-1 sebagai warisan sahaja. Bandingkan abc dengan hasil yang diketahui dahulu, kemudian cincang bahan tidak sensitif sebenar yang bait dan pengekodannya anda fahami.