Dieselben Bytes, unterschiedliche Alphabete
Standard-Base64 nach RFC 4648 verwendet + und / für die Werte 62 und 63; Base64url verwendet - und _. Der Text ??? ergibt Pz8/ im Standardformat und Pz8_ im URL-Format. >>> ergibt Pj4+ und Pj4-. Das Base64-Textwerkzeug von Moyoutil stellt die Standardzeichenfolgen wieder her, weist Zeichenfolgen mit - oder _ aber mit einem Formatfehler zurück. Der folgende Node.js-Code reproduziert beide Formate unabhängig davon.
for (const text of ["???", ">>>"]) {
const bytes = Buffer.from(text, "utf8");
console.log(bytes.toString("base64"),
bytes.toString("base64url"));
}
// Pz8/ Pz8_
// Pj4+ Pj4-Das Format nicht allein am Aussehen erkennen
foo ergibt in beiden Formaten Zm9v. Das Fehlen von +, /, - und _ beweist kein Standard-Base64. Prüfen Sie die Formatspezifikation des erzeugenden Systems. Padding ist eine eigene Regel: RFC 4648 verlangt es, sofern die darauf verweisende Spezifikation nichts anderes festlegt; RFC 7515 definiert JWS-Base64url ohne abschließende =. Beispielsweise ergibt f im Standardformat Zg== und im ungepaddeten URL-Format Zg.
for (const text of ["foo", "f"]) {
const bytes = Buffer.from(text, "utf8");
console.log(bytes.toString("base64"),
bytes.toString("base64url"));
}
// Zm9v Zm9v
// Zg== ZgMoyoutil konvertiert Base64url nicht automatisch und prüft keine JWS-Signaturen. Dieser Code vergleicht Formate. Lesbarer Text belegt keine gültige Signatur. Die JWS-Signatureingabe enthält den ursprünglichen codierten Header und die Nutzdaten; ersetzen Sie die Eingabe zur Signaturprüfung nicht durch eine neu codierte Version.
Häufig gestellte Fragen
Kann ich - und _ zum Decodieren löschen?
Löschen Sie sie nicht. Sie sind Datenzeichen für die Werte 62 und 63. Ihr Entfernen kann die ursprünglichen Daten ändern. Wenn Sie das von diesem Werkzeug akzeptierte Standard-Base64 benötigen, exportieren Sie dieses Format im Ursprungssystem.