Difference between revisions of "Base64"

From OpenSSLWiki
Jump to navigationJump to search
Line 1: Line 1:
 
Encode binary information 8 bits into ASCII.
 
Encode binary information 8 bits into ASCII.
 +
 +
== Algorithm ==
 +
 
3 x 8 bits binary are concatenated to form a 24bits word that is split in 4 x 6bits each being translating into an ascii value using a character ordered in following list :
 
3 x 8 bits binary are concatenated to form a 24bits word that is split in 4 x 6bits each being translating into an ascii value using a character ordered in following list :
  
Line 15: Line 18:
 
Base64 itself does not impose a line split, but openssl uses it in PEM context hence enforce that base64 content is splitted by lines with a maximum of 80 characters.
 
Base64 itself does not impose a line split, but openssl uses it in PEM context hence enforce that base64 content is splitted by lines with a maximum of 80 characters.
  
h1. Openssl command
+
== Openssl command ==
  
 
base64 or -enc base64 can be used to decode lines see [[Command_Line_Utilities]]
 
base64 or -enc base64 can be used to decode lines see [[Command_Line_Utilities]]
 +
 +
== EVP API ==
 +
 +
crypto/evp/encode.c
 +
crypto/evp/bio_b64.C
  
 
[[Category:Encoding]]
 
[[Category:Encoding]]

Revision as of 10:02, 1 April 2013

Encode binary information 8 bits into ASCII.

Algorithm

3 x 8 bits binary are concatenated to form a 24bits word that is split in 4 x 6bits each being translating into an ascii value using a character ordered in following list :

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0000000000111111111122222222223333333333444444444455555555556666
0123456789012345678901234567890123456789012345678901234567890123

[what makes 26 * 2 + 10 + 2 = 64 values]

Since it encodes by group of 3 bytes, when last group of 3 bytes miss one byte then = is used, when it miss 2 bytes then == is used for padding.

Base64 itself does not impose a line split, but openssl uses it in PEM context hence enforce that base64 content is splitted by lines with a maximum of 80 characters.

Openssl command

base64 or -enc base64 can be used to decode lines see Command_Line_Utilities

EVP API

crypto/evp/encode.c crypto/evp/bio_b64.C