Когда я попытался снова закодировать URL YouTube в base64, значение после = не изменилось, за исключением первых двух букв. Это уже в base64? URL преобразован: http://www.youtube.com/watch?v=CvUN8qg9lsk

Вывод (b64): http% 3A% 2F% 2Fwww.youtube.com% 2Fwatch% 3Fv% 3DCvUN8qg9lsk

Почему они такие же?

1 ответ1

0

Когда я снова попытался закодировать URL-адрес YouTube в base64, значение после знака = не изменилось, за исключением первых двух букв. Последняя часть уже в base64?

Минус знак = переводится в %3D , да, CvUN8qg9lsk уже закодирован в Base64.

Почему они одинаковы?

Как указывает @LPChip, используемая вами функция - это кодировщик URL, который переводит только специальные символы в URL (: , / , ? , + И =) в их шестнадцатеричные эквиваленты (не нормальные буквы).

Base64 также включает в себя другую кодировку, верно?

Хотя URL-кодирование считается формой кодирования Base64, стоит отметить, что этот термин потенциально перегружен. В Википедии (выделение добавлено):

«Base64 - это группа похожих схем кодирования двоичного текста, которые представляют двоичные данные в строковом формате ASCII, переводя их в представление radix-64».

Короче говоря, используемая вами функция base64 не предназначена для кодирования / декодирования CvUN8qg9lsk .

В качестве небольшого примечания: если вы добавите = (заполнение) и попытаетесь перевести, например, CvUN8qg9lsk= с "обычным" кодером / декодером Base64, это может сработать. Тем не менее, вряд ли вы получите что-то стоящее (то есть значимое для людей). Вполне вероятно, что значения, которые YouTube использует для получения своих идентификаторов, являются продуктом очень специфического алгоритма, который, вероятно, не имеет отношения ни к чему, кроме Google / YouTube.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .