UltKit

Base64 Encode & Decode

Tukar teks atau fail kepada Base64, atau nyahkod Base64 kembali kepada teks yang boleh dibaca. Unicode dikendalikan dengan betul, abjad selamat URL boleh dipilih dengan satu klik, dan penyahkodan menerima kedua-dua abjad, dengan atau tanpa pelapik.

Mod

0 aksara · 0 perkataan · 0 baris

0 aksara · 0 perkataan · 0 baris

Berjalan sepenuhnya dalam tab pelayar ini. Teks Anda tidak pernah dimuat naik atau disimpan.

Abjad Base64

Indeks → aksara daripada RFC 4648. Dua yang terakhir yang diserlahkan berbeza dalam varian selamat URL: 62 ialah + atau -, 63 ialah / atau _.

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 63/ _

Seberapa panjang output

Setiap 3 bait input menjadi 4 aksara; kumpulan akhir 1 atau 2 bait dilapik dengan = dalam Base64 standard dan dibiarkan tanpa pelapik dalam bentuk selamat URL.

InputBaitStandardSelamat URLPanjang
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Apakah fungsi Base64

Base64, yang ditakrifkan dalam RFC 4648, menulis bait sewenang-wenangnya menggunakan 64 aksara ASCII boleh cetak: A–Z, a–z, 0–9, + dan /. Setiap kumpulan tiga bait (24 bit) dipecahkan kepada empat nombor 6 bit, dan setiap nombor memilih satu aksara daripada abjad tersebut. Apabila panjang input bukan gandaan tiga, kumpulan terakhir ditambah satu atau dua tanda =. Hasilnya sentiasa lebih kurang 33% lebih besar daripada input: 4 aksara bagi setiap 3 bait.

Base64 wujud kerana banyak saluran dibina untuk teks. E-mel (MIME), URL data: dalam HTML dan CSS, medan JSON yang membawa imej atau sijil, dan pengepala pengesahan HTTP Basic semuanya menggunakan Base64 untuk memindahkan data binari dengan selamat. Ia bukan penyulitan dan tidak menyembunyikan apa-apa; penyahkodan tidak memerlukan kunci.

Unicode dan varian selamat URL

Base64 mengekod bait, bukan huruf, jadi teks mesti ditukar kepada bait terlebih dahulu. Alat ini sentiasa menggunakan UTF-8, pengekodan yang digunakan oleh web: é menjadi dua bait dan emoji empat bait. Fungsi btoa terbina dalam pelayar sahaja akan menghasilkan ralat pada sebarang aksara di atas U+00FF, sebab itulah pengekod ringkas gagal pada huruf beraksen dan emoji; di sini teks melalui TextEncoder dahulu, dan penyahkodan membalikkannya dengan TextDecoder. Jika bait yang dinyahkod bukan UTF-8 yang sah (imej, fail zip), alat ini memaparkannya dalam heksadesimal dan bukannya teks yang bercelaru.

Base64 standard menggunakan + dan /, yang mempunyai makna dalam URL dan nama fail. Abjad selamat-URL daripada seksyen 5 RFC 4648 menggantikannya dengan - dan _, dan lapikan biasanya dibuang. JSON Web Token menggunakan bentuk ini. Penyahkod menerima kedua-dua abjad dan lapikan yang tiada, jadi anda boleh menampal mana-mana satu.

Mengekod fail dan gambar

Pilih fail dan alat ini membacanya secara setempat dengan FileReader lalu memulangkan Base64-nya, atau URL data: lengkap dengan jenis MIME fail, sedia untuk ditampal ke dalam teg img atau latar belakang CSS. Imej sebaris menjimatkan satu permintaan HTTP tetapi bertambah satu pertiga saiznya dan tidak boleh dicache secara berasingan, jadi ia sesuai untuk ikon kecil dan bukan foto. Untuk imej dengan pratonton serta coretan HTML dan CSS siap pakai, gunakan Imej ke Base64.

Soalan lazim

Mengapakah output Base64 lebih panjang daripada input saya?
Setiap 3 bait menjadi 4 aksara, jadi output kira-kira 4/3 saiz input, ditambah sehingga dua aksara lapikan. Teks bukan ASCII lebih panjang lagi, kerana UTF-8 menggunakan dua hingga empat bait bagi setiap aksara.
Apakah tanda = di hujung?
Lapikan. Ia menjadikan panjang output gandaan empat apabila panjang input bukan gandaan tiga. Satu = bermakna kumpulan terakhir mempunyai dua bait, dua = bermakna ia mempunyai satu bait.
Mengapakah penyahkodan gagal dengan ralat aksara tidak sah?
Input mengandungi sesuatu di luar abjad, seperti ruang dalam sesuatu perkataan, tanda petikan, atau % daripada pengekodan URL. Pemisah baris dan lapikan yang tiada boleh diterima; aksara lain tidak.
Adakah selamat untuk mengekod kata laluan dengan Base64?
Base64 tidak menawarkan sebarang perlindungan. Pengesahan HTTP Basic menghantar user:password dalam Base64, sebab itulah ia hanya boleh digunakan melalui HTTPS. Gunakan penyulitan atau cincangan sebenar untuk melindungi rahsia.
Apakah perbezaan antara Base64 dan Base64url?
Hanya dua aksara dan lapikan: Base64url menggunakan - dan _ sebagai ganti + dan / serta biasanya tidak menyertakan =, jadi hasilnya boleh diletakkan dalam URL dan nama fail tanpa pelarian.