Friday 3 May 2013

How to encode decode String in Java base64 Encoding

Encoding and Decoding of String in Java using base64 is extremely easy if you are using Apache commons code open source library. it provides convenient static utility method Base64.encodeBase64(byte[]) and Base64.decodeBase64(byte []) for converting binary data into base64 encoded binary Stream and than decoding back from encoded data in base64 encoding mechanism. Many times we need to encode sensitive data be it binary String  format transferring over socket or transferring or storing data in xml files. Though there are other open source library available which provides support to encode any String into base64 e.g. MimeUtil from javax.mail package but Apache commons codec package is really handy and doesn't add lot of extra stuff. its API is also very neat and clean. In this article we will see how to encode and decode String into base64 encoding.

Base64 Encoding Algorithm

How to encode decode String in Java base64 exampleFor those who are not familiar with base64 encoding algorithm here is basic introduction. Base64 encodes (changes content of original String) String using an algorithm which uses 64 printable characters to replace each character in original string in an algorithmic sequence so that it can be decoded later. Base64 encoding prevents misuse of data by encoding it into ASCII format. Though there are more advanced encryption algorithm available like RSA-SHA and MD5 and you should use those in production but base64 is real simple and easy to use for simple encoding needs. By the way if like to learn more about String,  there are lot of articles related to String in java e.g. Why char array is preferred over String for storing password and Why String is immutable in Java, which you may like.

Encoding & Decoding String into Base64 Java

Here is a quick example of encoding and decoding of String in base64 encoding algorithm. we will first encode String by converting it into byte array and than passing down to Base64.encodeBase64(byte[]) which encodes byte array

as per base64 encoding algorithm and returns and encoded byte array, which can be converted into String. in Later

half we will decode the String by calling Base64.decodeBase64(byte[]) method.

import org.apache.commons.codec.binary.Base64;
 * Java program to encode and decode String in Java using Base64 encoding algorithm
 * @author http://javarevisited.blogspot.com
public class Base64EncodingExample{
    public static void main(String args[]) throws IOException {
        String orig = "original String before base64 encoding in Java";
        //encoding  byte array into base 64
        byte[] encoded = Base64.encodeBase64(orig.getBytes());     
      
        System.out.println("Original String: " + orig );
        System.out.println("Base64 Encoded String : " + new String(encoded));
      
        //decoding byte array into base64
        byte[] decoded = Base64.decodeBase64(encoded);      
        System.out.println("Base 64 Decoded  String : " + new String(decoded));
Original String: original String before base64 encoding in Java
Base64 Encoded String : b3JpZ2luYWwgU3RyaW5nIGJlZm9yZSBiYXNlNjQgZW5jb2RpbmcgaW4gSmF2YQ==
Base 64 Decoded  String : original String before base64 encoding in Java

Dependency

In order to execute this Base64 Encoding Example in Java you need to download and add commons-codec-1.2.jar into your application classpath. if you are using Maven for managing your project dependency you can include following

  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>20041127.091804</version>
This is very simple and clean base64 encoding example in Java but serves the purpose. That's all in how to
encode Java String into Base64 encoding and how to decode Java String. let me know if you face any issue.

No comments:

Post a Comment