17char b64[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
21 *((*clrstr) ++) = in[0] << 2 | in[1] >> 4;
22 *((*clrstr) ++) = in[1] << 4 | in[2] >> 2;
23 *((*clrstr) ++) = in[2] << 6 | in[3] >> 0;
43 phase = (phase + 1) % 4;
46 in[0]=in[1]=in[2]=in[3]=0;
54void encodeblock(
unsigned char in[],
char b64str[],
int len ) {
56 out[0] =
b64[ in[0] >> 2 ];
57 out[1] =
b64[ ((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4) ];
58 out[2] = (
unsigned char) (len > 1 ?
b64[ ((in[1] & 0x0f) << 2) |
59 ((in[2] & 0xc0) >> 6) ] :
'=');
60 out[3] = (
unsigned char) (len > 2 ?
b64[ in[2] & 0x3f ] :
'=');
62 strncat(b64str, (
char*)out,
sizeof(
char)*5);
75 in[i] = (
unsigned char) clrstr[j];
void b64_encode(char *clrstr, char *b64dst)
b64_encode - encode a b64 based char
void b64_decode(char *b64src, char *clrdst)
b64_decode - decode to a b64 based char
void encodeblock(unsigned char in[], char b64str[], int len)
void decodeblock(unsigned char in[], unsigned char **clrstr)