當我嘗試再次將 YouTube url 編碼為 base64 時,= 之後的值除了前兩個字母之外沒有改變。那已經是base64了嗎?網址轉換:http://www.youtube.com/watch?v=CvUN8qg9lsk
輸出(b64):http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DCvUN8qg9lsk
為什麼它們是一樣的?
答案1
當我嘗試再次將 YouTube URL 編碼為 base64 時,除了前兩個字母之外,符號後面的值
=
並沒有改變。最後一部分已經是 base64 了嗎?
減去=
被翻譯成的符號%3D
,是的,CvUN8qg9lsk
已經用 Base64 編碼了。
為什麼它們是一樣的?
正如 @LPChip 指出的,您使用的函數是一個 URL 編碼器,它僅將 URL 中的特殊字元(:
、/
、?
和)轉換為其十六進位等效值(不是普通字母)。+
=
Base64 還包括其他編碼,對嗎?
雖然 URL 編碼被視為 Base64 編碼的一種形式,但值得注意的是,該術語可能存在超載的情況。每維基百科(強調):
「Base64 是一個一組類似的二進位到文字的編碼方案透過將 ASCII 字串格式轉換為 radix-64 表示形式來表示二進位資料。
簡而言之,base64
您使用的函數並不意味著編碼/解碼CvUN8qg9lsk
。
作為一個小旁注,如果您添加=
(填充)並嘗試CvUN8qg9lsk=
使用“普通”Base64 編碼器/解碼器進行翻譯,這可能會起作用。也就是說,你不太可能得到任何有價值的東西(即對人類有意義的東西)。 YouTube 用於獲取其 ID 的值很可能是一種非常特定的演算法的產物,該演算法可能與 Google/YouTube 以外的任何內容都沒有關係。