Home » Core Java » crypto » Encrypt/Decrypt object with DES

About Ilias Tsagklis

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

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());
		catch (NoSuchPaddingException e) {
			System.out.println("No Such Padding:" + e.getMessage());
		catch (BadPaddingException e) {
			System.out.println("Bad Padding:" + e.getMessage());
		catch (InvalidKeyException e) {
			System.out.println("Invalid Key:" + e.getMessage());
		catch (IllegalBlockSizeException e) {
			System.out.println("Illegal Block:" + e.getMessage());
		catch (ClassNotFoundException e) {
			System.out.println("Class Not Found:" + e.getMessage());
		catch (IOException e) {
			System.out.println("I/O Error:" + e.getMessage());


	public static class SecretObject implements Serializable {

		private static final long serialVersionUID = -1335351770906357695L;

		private final String message;

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

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




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.

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!


1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design


and many more ....


Receive Java & Developer job alerts in your Area


Notify of

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

Inline Feedbacks
View all comments