Byte yang sama, alfabet berbeda
Base64 standar dalam RFC 4648 memakai + dan / untuk nilai 62 dan 63; Base64url memakai - dan _. Teks ??? menjadi Pz8/ dalam format standar dan Pz8_ dalam format URL. >>> menjadi Pj4+ dan Pj4-. Alat Base64 teks Moyoutil memulihkan string standar, tetapi menolak string berisi - atau _ dengan kesalahan format. Kode Node.js berikut mereproduksi kedua format secara terpisah.
for (const text of ["???", ">>>"]) {
const bytes = Buffer.from(text, "utf8");
console.log(bytes.toString("base64"),
bytes.toString("base64url"));
}
// Pz8/ Pz8_
// Pj4+ Pj4-Jangan menentukan format hanya dari tampilannya
foo menjadi Zm9v dalam kedua format. Ketiadaan +, /, -, dan _ tidak membuktikan string itu Base64 standar. Periksa spesifikasi format sistem pembuatnya. Padding merupakan aturan terpisah: RFC 4648 mewajibkannya kecuali spesifikasi yang merujuknya menyatakan lain; RFC 7515 mendefinisikan Base64url JWS tanpa = di akhir. Misalnya, f menjadi Zg== dalam format standar dan Zg dalam format URL tanpa padding.
for (const text of ["foo", "f"]) {
const bytes = Buffer.from(text, "utf8");
console.log(bytes.toString("base64"),
bytes.toString("base64url"));
}
// Zm9v Zm9v
// Zg== ZgMoyoutil tidak mengonversi Base64url secara otomatis atau memverifikasi tanda tangan JWS. Kode ini membandingkan format. Mendapatkan teks yang terbaca tidak membuktikan tanda tangan valid. Masukan tanda tangan JWS berisi header dan payload asli yang telah dikodekan; jangan mengganti masukan verifikasi dengan versi yang dikodekan ulang.
Pertanyaan yang Sering Diajukan
Bisakah - dan _ dihapus agar string dapat didekode?
Jangan hapus keduanya. Itu karakter data yang mewakili nilai 62 dan 63. Menghapusnya dapat mengubah data asli. Jika membutuhkan Base64 standar yang diterima alat ini, ekspor format tersebut dari sistem asal.