b64 -- Base64 Encode/Decode Utility

4.3 Stars (7)
49 Downloads (This Week)
Last Update:
  Browse Code CVS Repository

Screenshots

Description

base64 RFC1113 Vanilla ANSI-C Code for a portable stand-alone file encode/decode utility. In 2001, I asked people to 'Help me break it!' Since then, 10+years later, the code remains unbroken and is in wide production use world-wide. It has been ported to all major architectures and been used as a template for ports to different computer and human languages. This is very mature and stable code.

Although this comes from a project that was constrained by export controls and is used in secure systems, it is not security code per-se. I have therefore altered the 'Export Controls' category.

b64 -- Base64 Encode/Decode Utility Web Site

Categories

Email, Libraries

License

MIT License

Update Notifications





User Ratings

★★★★★
★★★★
★★★
★★
5
1
0
0
1
ease 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
features 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
design 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
support 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 2 / 5
Write a Review

User Reviews

  • jorgeventura
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    I had to apply some changes to work on Linux and Windows: The '-' and '+' means line removed and line included. 1. change for unix files. if( blocksout > 0 ) { - fprintf( outfile, "\r\n" ); + fprintf( outfile, "\n" ); } 2. change v = getc( infile ); - if( v != EOF ) { + if( feof( infile ) == 0) { v = ((v < 43 || v > 122) ? 0 : (int) cd64[ v - 43 ]); 3. change in the break position perror( b64_message( B64_FILE_IO_ERROR ) ); retcode = B64_FILE_IO_ERROR; + break; } - break;

    Posted 08/07/2014
  • kl7drice
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    Ran into problems with decodes as others have mentioned. Appears the author tried to fix a minor bug recently (2014) and introduced a new one. In the decode() function, change: if( putc((int)out[i]) !=0){ if( ferror(outfile)!=0) { ...} break; } to if( putc((int)out[i]) !=0){ if( ferror(outfile)!=0) { ... ; break; } } then it works fine. I was able to use it to verify a bug in yet another base64 decoder that was corrupting science data.

    Posted 05/09/2014
  • stev10
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    Read the zeroxia review if you are having decoding problems - there is a bug in the latest version! but the old one is great

    Posted 01/20/2014
  • nikalayenka
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    For me works well. Used with both text data and compressed binaries. Also I have tried two samples from negative review and I could not confirm this issue. Both: online decoder and this tool produced the same result which is correct (for first string result is one char less).

    Posted 06/03/2013
  • zeroxia
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    The following source file linked on the web site (hxxp://base64.sourceforge.net/) is buggy: hxxp://base64.sourceforge.net/b64.c In the function "decode", the following line will cause decoding to render broken result: if( putc( (int) out[i], outfile ) == 0 ){ Because "putc" will return 0 if "out[i]" is zero, which is normal for binary files (an octect of value 0). But on the project page: hxxp://sourceforge.net/projects/base64/ One can view the source as: hxxp://base64.cvs.sourceforge.net/viewvc/base64/base64/b64.c?revision=1.4&view=markup Which does not check return value of "putc" in the "decode" function. So no short write will occur if all goes well, but "putc" does return EOF on error, and one may argue checking this is required to enhance the program's robustness. :-) (Sorry for the hxxp garbage since sf forbids URLs in comments)

    Posted 05/23/2013
Read more reviews

Additional Project Details

Languages

English

Intended Audience

Advanced End Users, Developers, Security Professionals

Programming Language

C

Registered

2001-08-05
Screenshots can attract more users to your project.
Features can attract more users to your project.

Icons must be PNG, GIF, or JPEG and less than 1 MiB in size. They will be displayed as 48x48 images.