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