crypto

Encrypt/Decrypt object with DES

This is an example of how to encrypt and decrypt an object with DES. DES in computing refers to the Data Encryption Standard and is supported by Java. To encrypt and decrypt an object with DES you should:

  • Create a class to represent the object to be encrypted. SecretObject implements Serializable. It has a String property.
  • Generate a SecretKey using DES algorithm, with the KeyGenerator generateKey() API method.
  • Initialize two Ciphers, one in encryption mode and the other one in decryption mode.
  • Create a SealedObject, that enables a programmer to create an object and protect its confidentiality with a cryptographic algorithm. The new sealed object is created using the object and the encryption cipher.
  • Use getAlgorithm() API method of SealedObject to get the algorithm that was used to seal this object.
  • Decrypt the sealed object, using getObject(Cipher c) API method with the decryption cipher.

Let’s take a look at the code snippet that follows:

package com.javacodegeeks.snippets.core;

import java.io.IOException;
import java.io.Serializable;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SealedObject;
import javax.crypto.SecretKey;

public class EncryptDecryptObjectWithDES {

	private static Cipher ecipher;
	private static Cipher dcipher;

	private static SecretKey key;

	public static void main(String[] args) {

		try {

			// generate secret key using DES algorithm
			key = KeyGenerator.getInstance("DES").generateKey();

			ecipher = Cipher.getInstance("DES");
			dcipher = Cipher.getInstance("DES");

			// initialize the ciphers with the given key

  ecipher.init(Cipher.ENCRYPT_MODE, key);

  dcipher.init(Cipher.DECRYPT_MODE, key);

  // create a sealed object

  SealedObject sealed = new SealedObject(new SecretObject("My secret message"), ecipher);

  // get the algorithm with the object has been sealed

  String algorithm = sealed.getAlgorithm();

  System.out.println("Algorithm " + algorithm);

  // unseal (decrypt) the object

  SecretObject o = (SecretObject) sealed.getObject(dcipher);

  System.out.println("Original Object: " + o);

		}
		catch (NoSuchAlgorithmException e) {
			System.out.println("No Such Algorithm:" + e.getMessage());
			return;
		}
		catch (NoSuchPaddingException e) {
			System.out.println("No Such Padding:" + e.getMessage());
			return;
		}
		catch (BadPaddingException e) {
			System.out.println("Bad Padding:" + e.getMessage());
			return;
		}
		catch (InvalidKeyException e) {
			System.out.println("Invalid Key:" + e.getMessage());
			return;
		}
		catch (IllegalBlockSizeException e) {
			System.out.println("Illegal Block:" + e.getMessage());
			return;
		}
		catch (ClassNotFoundException e) {
			System.out.println("Class Not Found:" + e.getMessage());
			return;
		}
		catch (IOException e) {
			System.out.println("I/O Error:" + e.getMessage());
			return;
		}

	}

	public static class SecretObject implements Serializable {

		private static final long serialVersionUID = -1335351770906357695L;

		private final String message;

		public SecretObject(String message) {
			this.message = message;
		}

		@Override
		public String toString() {
			return "SecretObject [message=" + message + "]";
		}

	}

}

Output:

Algorithm DES Original Object: SecretObject [message=My secret message]

 
This was an example of how to encrypt and decrypt an object with DES in Java.

Ilias Tsagklis

Ilias is a software developer turned online entrepreneur. He is co-founder and Executive Editor at Java Code Geeks.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button