URL YouTube не может быть снова преобразован в base64
Когда я попытался снова закодировать URL-адрес YouTube в base64, значение после = не изменилось, за исключением первых двух букв. Это уже в base64? URL преобразован: http://www.youtube.com/watch?v=CvUN8qg9lsk
Вывод (b64): http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DCvUN8qg9lsk
Почему они такие же?
1 ответ
Когда я снова попытался закодировать URL-адрес YouTube в base64, значение после
=
знак не изменился, за исключением первых двух букв. Последняя часть уже в base64?
Минус =
знак переводится на %3D
, да, CvUN8qg9lsk
уже закодирован в Base64.
Почему они одинаковы?
Как указывает @LPChip, используемая вами функция - это кодировщик URL, который переводит только специальные символы в URL (:
, /
, ?
, +
а также =
) в их шестнадцатеричные эквиваленты (не нормальные буквы).
Base64 также включает другую кодировку, верно?
Хотя URL-кодирование считается формой кодировки Base64, стоит отметить, что этот термин потенциально перегружен. В Википедии (выделение добавлено):
"Base64 - это группа похожих схем кодирования двоичного текста, которые представляют двоичные данные в строковом формате ASCII, переводя их в представление radix-64".
Короче говоря, base64
используемая вами функция не предназначена для кодирования / декодирования CvUN8qg9lsk
,
В качестве небольшого примечания, если вы добавите =
(заполнение) и попробуйте перевести, например, CvUN8qg9lsk=
с "нормальным" кодером / декодером Base64 это может работать. Тем не менее, вряд ли вы получите что-то стоящее (то есть значимое для людей). Вполне вероятно, что значения, которые YouTube использует для получения своих идентификаторов, являются продуктом очень специфического алгоритма, который, вероятно, не имеет отношения ни к чему, кроме Google/YouTube.