Base64 encoding vs Base64url encoding


Base 64 encoding cannot be directly used for URL encoding. In this blog, we would get in the detials for why Basse64URL encoding is needed.

Below is character set of base 64

    Value Encoding  Value Encoding  Value Encoding  Value Encoding
         0 A            17 R            34 i            51 z
         1 B            18 S            35 j            52 0
         2 C            19 T            36 k            53 1
         3 D            20 U            37 l            54 2
         4 E            21 V            38 m            55 3
         5 F            22 W            39 n            56 4
         6 G            23 X            40 o            57 5
         7 H            24 Y            41 p            58 6
         8 I            25 Z            42 q            59 7
         9 J            26 a            43 r            60 8
        10 K            27 b            44 s            61 9
        11 L            28 c            45 t            62 +
        12 M            29 d            46 u            63 /
        13 N            30 e            47 v
        14 O            31 f            48 w         (pad) =
        15 P            32 g            49 x
        16 Q            33 h            50 y


Below is character set of base64url

         "URL and Filename safe" Base 64 Alphabet

     Value Encoding  Value Encoding  Value Encoding  Value Encoding
         0 A            17 R            34 i            51 z
         1 B            18 S            35 j            52 0
         2 C            19 T            36 k            53 1
         3 D            20 U            37 l            54 2
         4 E            21 V            38 m            55 3
         5 F            22 W            39 n            56 4
         6 G            23 X            40 o            57 5
         7 H            24 Y            41 p            58 6
         8 I            25 Z            42 q            59 7
         9 J            26 a            43 r            60 8
        10 K            27 b            44 s            61 9
        11 L            28 c            45 t            62 - (minus)
        12 M            29 d            46 u            63 _
        13 N            30 e            47 v           (underline)
        14 O            31 f            48 w
        15 P            32 g            49 x
        16 Q            33 h            50 y         (pad) =

All the character set are almost the same, except last set of characters 
+, /  are present in basse 64 set.
-, _ are present in base64 url safe character set.


Take an example of sample url

http://websecurityinfo.blogspot.com/test+123 

Above is valid url and +, / have special meaning the URL. hence it makes unclear to directtly use base64 encoding in the URL or file names.


Hence in base64url character set , + and / are replaced with -,_ .

This would base encoding to be used in URL.


Usage of Base64URL :
JWT uses base64url encoding.



No comments:

Post a Comment