#include #include #include unsigned char *base64_encode (unsigned char *buffer, unsigned int len) { unsigned char *ret = (unsigned char *) malloc ((((len+2)/3)*4)+1); EVP_EncodeBlock (ret, buffer, len); ret[(((len+2)/3)*4)] = 0; return ret; } unsigned char *base64_decode (unsigned char *buffer, unsigned int len) { unsigned char *ret = (unsigned char *) malloc ((((len+2)/3)*4)+1); EVP_DecodeBlock (ret, buffer, len); ret[(((len+2)/3)*4)] = 0; return ret; } void usage (char *progname) { printf ("Usage: %s [ encode | decode ] Text\n\n", progname); exit(0); } int main (int argc, char *argv[]) { int i; /* Sin parametros */ if (argc < 3) usage(argv[0]); if (argc == 3) { /* Verificamos los algoritmos */ if (strcmp(argv[1], "encode") == 0) printf ("%s\n", base64_encode (argv[2], strlen(argv[2]))); if (strcmp(argv[1], "decode") == 0) printf ("%s\n", base64_decode (argv[2], strlen(argv[2]))); } else usage(argv[0]); return 0; }