Als ich versuchte, die YouTube-URL erneut in Base64 zu kodieren, änderte sich der Wert nach = bis auf die ersten beiden Buchstaben nicht. Ist das schon in Base64? Konvertierte URL:http://www.youtube.com/watch?v=CvUN8qg9lsk
Ausgabe (b64): http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DCvUN8qg9lsk
Warum sind sie gleich?
Antwort1
Als ich versuchte, eine YouTube-URL erneut in Base64 zu kodieren,
=
änderte sich der Wert nach dem Zeichen nicht, mit Ausnahme der ersten beiden Buchstaben. Ist der letzte Teil bereits in Base64?
Abzüglich des =
Zeichens, das in übersetzt wird %3D
, CvUN8qg9lsk
ist „ja“ bereits in Base64 codiert.
Warum sind sie gleich?
Wie @LPChip anmerkt, handelt es sich bei der von Ihnen verwendeten Funktion um einen URL-Encoder, der nur Sonderzeichen in der URL ( :
, /
, ?
, +
und =
) in ihre hexadezimalen Entsprechungen (keine normalen Buchstaben) übersetzt.
Base64 umfasst auch andere Kodierungen, oder?
Obwohl die URL-Kodierung als eine Form der Base64-Kodierung angesehen wird, ist anzumerken, dass dieser Begriff möglicherweise überladen ist.Wikipedia(Betonung hinzugefügt):
„Base64 ist einGruppe ähnlicher Binär-zu-Text-Kodierungsschematadie binäre Daten in einem ASCII-Stringformat darstellen, indem sie diese in eine Radix-64-Darstellung übersetzen."
Kurz gesagt, die base64
von Ihnen verwendete Funktion ist nicht zum Kodieren/Dekodieren gedacht CvUN8qg9lsk
.
Eine kleine Randbemerkung: Wenn Sie ein =
(Padding) hinzufügen und versuchen, z. B. CvUN8qg9lsk=
mit einem „normalen“ Base64-Encoder/Decoder zu übersetzen, kann dies funktionieren. Allerdings ist es unwahrscheinlich, dass Sie etwas Sinnvolles (also für Menschen Sinnvolles) erhalten. Es ist sehr wahrscheinlich, dass die Werte, die YouTube zum Abrufen seiner IDs verwendet, das Produkt eines sehr spezifischen Algorithmus sind, der wahrscheinlich keine Beziehung zu irgendetwas außerhalb von Google/YouTube hat.