Когда я снова попытался закодировать URL-адрес YouTube в base64, значение после знака =
не изменилось, за исключением первых двух букв. Последняя часть уже в base64?
Минус знак =
переводится в %3D
, да, CvUN8qg9lsk
уже закодирован в Base64.
Почему они одинаковы?
Как указывает @LPChip, используемая вами функция - это кодировщик URL, который переводит только специальные символы в URL (:
, /
, ?
, +
И =
) в их шестнадцатеричные эквиваленты (не нормальные буквы).
Base64 также включает в себя другую кодировку, верно?
Хотя URL-кодирование считается формой кодирования Base64, стоит отметить, что этот термин потенциально перегружен. В Википедии (выделение добавлено):
«Base64 - это группа похожих схем кодирования двоичного текста, которые представляют двоичные данные в строковом формате ASCII, переводя их в представление radix-64».
Короче говоря, используемая вами функция base64
не предназначена для кодирования / декодирования CvUN8qg9lsk
.
В качестве небольшого примечания: если вы добавите =
(заполнение) и попытаетесь перевести, например, CvUN8qg9lsk=
с "обычным" кодером / декодером Base64, это может сработать. Тем не менее, вряд ли вы получите что-то стоящее (то есть значимое для людей). Вполне вероятно, что значения, которые YouTube использует для получения своих идентификаторов, являются продуктом очень специфического алгоритма, который, вероятно, не имеет отношения ни к чему, кроме Google / YouTube.