b64 -- Base64 Encode/Decode Utility (original) (raw)
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.
Project Samples
License
MIT License
Try Google Cloud Risk-Free With $300 in Credit
No hidden charges. No surprise bills. Cancel anytime.
Use your credit across every product. Compute, storage, AI, analytics. When it runs out, 20+ products stay free. You only pay when you choose to.
User Ratings
4.5 out of 5 stars
★★★★★
★★★★
★★★
★★
★
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
User Reviews
Thank you! I finally was able to recover images from the 1990's which were saved as attachments in a Windows 98 version of Eudora -- the only version left after a series of disasters.
simple, straightforward, no bells & whistles to break. I've built & used this on Windows (both cmd.exe & cygwin,) 2 flavors of linux, and OS X. I just compiled v0.94R on OS X El Cap with g++ 7.3.0. Only issue noted: 7 x "warning: conversion from string literal to 'char *' is deprecated". You could do much worse.
works great only a minor bug if out[i] contains 0x00 it will not write to outfile and fail. In order to fix this, change "if( putc( (int)(out[i]), outfile ) == 0 )" to "if( putc( (int)(out[i]), outfile ) == EOF )"
1 user found this review helpful.1 user found this review helpful.
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;
1 user found this review helpful. Read more reviews >
Additional Project Details
Languages
English
Intended Audience
Advanced End Users, Developers, Security Professionals
Programming Language
Related Categories
2001-08-05