Base64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?
Base64 рдПрдХ рдмрд╛рдЗрдирд░реА-рд╕реЗ-рдЯреЗрдХреНрд╕реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рд░реНрдлрд╝ 64 рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп ASCII рд╡рд░реНрдгреЛрдВ рд╕реЗ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ: A-Z, a-z, 0-9, рд╕рд╛рде рд╣реА + рдФрд░ /ред рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ HTML/CSS рдореЗрдВ рдЗрдореЗрдЬ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ (data URI), рдИрдореЗрд▓ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЕрдЯреИрдЪрдореЗрдВрдЯ рднреЗрдЬрдиреЗ (MIME), JSON Web Token рдореЗрдВ, рдФрд░ рд╣рд░ рдЙрд╕ рдЬрдЧрд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рд░реНрдлрд╝-рдЯреЗрдХреНрд╕реНрдЯ рд╡рд╛рд▓реЗ рдЪреИрдирд▓ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЧреБрдЬрд╝рд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЯреВрд▓ рдЖрдкрдХреЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реИ тАФ рдкрд╣рд▓реЗ UTF-8 рдмрд╛рдЗрдЯреНрд╕ рдирд┐рдХрд╛рд▓реА рдЬрд╛рддреА рд╣реИрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдПрдиреНрдХреЛрдбрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЕрдкрдирд╛ рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдпрд╛ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд░ рджреЗрдВред рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ UTF-8 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдорд╛рдирдХ Base64 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдиреНрдХреЛрдб рдХреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯ рдХрд╛рдЙрдВрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдлрд╝реЙрд░реНрдореВрд▓рд╛ рдЖрд╕рд╛рди рднрд╛рд╖рд╛ рдореЗрдВ
рдПрдиреНрдХреЛрдбрд░ рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рддреАрди-рддреАрди рдХреЗ рд╕рдореВрд╣ рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИред рддреАрди рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд▓рдХрд░ 24 рдмрд┐рдЯ рдмрдирд╛рддреА рд╣реИрдВ, рдЬреЛ рдмрд░рд╛рдмрд░ рдмрдБрдЯрдХрд░ рдЪрд╛рд░ 6-рдмрд┐рдЯ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдЖ рдЬрд╛рддреА рд╣реИрдВред рд╣рд░ 6-рдмрд┐рдЯ рдорд╛рди (0тАУ63) рд╡рд░реНрдгрдорд╛рд▓рд╛ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╡рд░реНрдг рдмрдирд╛рддрд╛ рд╣реИред рдЬрдм рдЗрдирдкреБрдЯ рдХреА рд▓рдВрдмрд╛рдИ 3 рдХрд╛ рдЧреБрдгрдХ рдирд╣реАрдВ рд╣реЛрддреА, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдЦрд╝рд┐рд░реА рд╕рдореВрд╣ рдХреЛ рдкреИрдб рдХрд░ рджреЗрддрд╛ рд╣реИ: рдПрдХ рдмрдЪреА рд╣реБрдИ рдмрд╛рдЗрдЯ рд╕реЗ рджреЛ рд╡рд░реНрдг рдФрд░ == рдмрдирддреЗ рд╣реИрдВ, рдФрд░ рджреЛ рдмрдЪреА рд╣реБрдИ рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рддреАрди рд╡рд░реНрдг рдФрд░ рдПрдХ = рдмрдирддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреА рд▓рдВрдмрд╛рдИ рд╣рдореЗрд╢рд╛ 4 ├Ч ceil(n/3) рд╣реЛрддреА рд╣реИред
$$\text{Base64} = \operatorname{encode}_{64}\!\left(\text{Text}\right), \qquad L_{out} = 4 \left\lceil \frac{L_{in}}{3} \right\rceil$$
рд╣рд▓ рдХрд┐рдпрд╛ рд╣реБрдЖ рдЙрджрд╛рд╣рд░рдг
рдЯреЗрдХреНрд╕реНрдЯ Man рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреА ASCII рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВ 77, 97, 110 тЖТ рдмрд╛рдЗрдирд░реА рдореЗрдВ 01001101 01100001 01101110ред рдЗрдиреНрд╣реЗрдВ 6-рдмрд┐рдЯ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯреЗрдВ: 010011 = 19 тЖТ T, 010110 = 22 тЖТ W, 000101 = 5 тЖТ F, 101110 = 46 тЖТ uред рдирддреАрдЬрд╛: TWFu тАФ 3 рдмрд╛рдЗрдЯреНрд╕ рдЕрдВрджрд░ рдЧрдИрдВ, 4 рд╡рд░реНрдг рдмрд╛рд╣рд░ рдЖрдП, рдХреЛрдИ рдкреИрдбрд┐рдВрдЧ рдирд╣реАрдВред рдпрд╣рд╛рдБ \(L_{out} = 4 \left\lceil \frac{3}{3} \right\rceil = 4\)ред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓
рдореЗрд░реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ = рдирд┐рд╢рд╛рди рдХреНрдпреЛрдВ рдЖрддреЗ рд╣реИрдВ? рдЬрдм рдЖрдкрдХрд╛ рдЗрдирдкреБрдЯ 3 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЧреБрдгрдХ рдирд╣реАрдВ рд╣реЛрддрд╛, рддрдм рдкреИрдбрд┐рдВрдЧ рдЖрдЦрд╝рд┐рд░реА рд╕рдореВрд╣ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ, рддрд╛рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреА рд▓рдВрдмрд╛рдИ 4 рдХрд╛ рдЧреБрдгрдХ рдмрдиреА рд░рд╣реЗред
рдХреНрдпрд╛ Base64 рдореЗрд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ? рдирд╣реАрдВред Base64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИ, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдирд╣реАрдВ тАФ рдХреЛрдИ рднреА рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдлрд╝ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдврдВрдЧ рд╕реЗ рднреЗрдЬрдиреЗ рд▓рд╛рдпрдХ рдмрдирд╛рддрд╛ рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдЗрдирдкреБрдЯ рд╕реЗ рдмрдбрд╝рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ? Base64 рдбреЗрдЯрд╛ рдХреЛ рд▓рдЧрднрдЧ 33% рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ 3 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ 4 рд╡рд░реНрдг рдмрдирддреЗ рд╣реИрдВред