decode base 64
Le système base64 encoding consiste à encoder 3 octets dans 4 pour
que chaque octet ne contienne que 6 bits significatifs. ce petit programme permet de faire la conversion pour retrouver le fichier d'origine. Il s'utilise de la façon suivante:
base64 <fichiersource> [<fichierdestination>]
#include <stdio.h>
#define b(a) ((a>='A'&& a<='Z')?(a-65):\
((a>='a' && a<='z')?(a-71):\
((a>='0' && a<='9')?(a+4):\
((a=='+')?(62):\
((a=='/')?(63):(0))\
)\
)\
)\
)
#define isEnd(a) if ( a == '=' ) break;
int main ( int argc, char *argv[] ) {
FILE *f, *g;
unsigned char buff[4];
if ( !(f = fopen(argv[1],"r"))) f = stdin ;
if ( !(g = fopen(argv[2],"w"))) g = stdout;
while ( fread(buff,1,4,f) == 4 ) {
fprintf(g,"%c",b(buff[0])<<2 | b(buff[1])>>4 & 0x3 );
isEnd(buff[2])
fprintf(g,"%c",b(buff[1])<<4 | b(buff[2])>>2 & 0xF);
isEnd(buff[3])
fprintf(g,"%c",b(buff[2])<<6 | b(buff[3]) & 0x3F);
}
fclose(f);
fclose(g);
return 0;
}
|