encode base 64
Ce petit programme permet de faire la conversion pour trouver le fichier encodé. Il s'utilise de la façon suivante:
enc64 <fichiersource> [<fichierdestination>]
#include <stdio.h>
#define b(a) (((a)>=0 && (a)<=25)?((a)+'A'):
(((a)>=26 && (a)<=51)?((a)-26+'a'):
(((a)>=52 && (a)<=61)?((a)-52+'0'):
(((a)==62)?('+'):
(((a)==63)?('/'):('='))
)
)
)
)
int main ( int argc, char *argv[] ) {
FILE *f, *g;
unsigned char buff[3];
int i=0;
if ( !(f = fopen(argv[1],"r"))) f = stdin ;
if ( !(g = fopen(argv[2],"w"))) g = stdout;
buff[0] = buff[1] = buff[2] = 0;
while ( ( i = fread(buff,1,3,f) ) > 0 ) {
fprintf(g,"%c",b(buff[0]>>2) );
fprintf(g,"%c",b(((buff[0] & 0x3) << 4) | buff[1] >> 4 ) );
if ( i > 1 ) {
fprintf(g,"%c",b(((buff[1] & 0xF) << 2) | buff[2] >> 6 ) );
if ( i > 2 ) {
fprintf(g,"%c",b(buff[2] & 0x3F ) );
} else
fprintf(g,"=");
} else
fprintf(g,"==");
buff[0] = buff[1] = buff[2] = 0;
}
fclose(f);
fclose(g);
return 0;
}
|