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.

Другие вопросы по тегам