JCE Encryption – Data Encryption Standard (DES) In this example, we show you how to use Java Cryptography Extension (JCE) to encrypt or decrypt a text via Data Encryption Standard (DES) mechanism. 1. DES Key Create a DES Key. ---------------------------------------------------------------- KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey(); ---------------------------------------------------------------- 2. Cipher Info Create a Cipher instance from Cipher class, specify the following information and separated by a slash (/). Algorithm name Mode (optional) Padding scheme (optional) Cipher desCipher; ----------------------------------------------------------- // Create the cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); ----------------------------------------------------------- Note DES = Data Encryption Standard. ECB = Electronic Codebook mode. PKCS5Padding = PKCS #5-style padding. In this case, you created a DES (Data Encryption Standard) cipher in Electronic Codebook mode, with PKCS #5-style padding. 3. Convert It Convert String into Byte[] array format. -------------------------------------------------- byte[] text = "No body can see me".getBytes(); -------------------------------------------------- 4. Encrypt It Make Cipher in encrypt mode, and encrypt it with Cipher.doFinal() method. ------------------------------------------------------------------------- desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); byte[] textEncrypted = desCipher.doFinal(text); ------------------------------------------------------------------------- 5. Decrypt It Make Cipher in decrypt mode, and decrypt it with Cipher.doFinal() method as well. --------------------------------------------------------------------------------- desCipher.init(Cipher.DECRYPT_MODE, myDesKey); byte[] textDecrypted = desCipher.doFinal(textEncrypted); --------------------------------------------------------------------------------- 6. Full Example Full Example to show how to use Java’s JCE to encrypt and decrypt text in DES mechanism. You can use a Netbeans project name: JavaDES This creates a package name: javades --------------------------------------------------------------------------------- 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.SecretKey; public class JavaDES { public static void main(String[] argv) { try{ KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey(); Cipher desCipher; // Create the cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); // Initialize the cipher for encryption desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); //sensitive information byte[] text = "No body can see me".getBytes(); System.out.println("Text [Byte Format] : " + text); System.out.println("Text : " + new String(text)); // Encrypt the text byte[] textEncrypted = desCipher.doFinal(text); System.out.println("Text Encryted : " + textEncrypted); // Initialize the same cipher for decryption desCipher.init(Cipher.DECRYPT_MODE, myDesKey); // Decrypt the text byte[] textDecrypted = desCipher.doFinal(textEncrypted); System.out.println("Text Decryted : " + new String(textDecrypted)); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); }catch(NoSuchPaddingException e){ e.printStackTrace(); }catch(InvalidKeyException e){ e.printStackTrace(); }catch(IllegalBlockSizeException e){ e.printStackTrace(); }catch(BadPaddingException e){ e.printStackTrace(); } } } ----------------------------------------------------------------------------------------- 7. Output Text [Byte Format] : [B@19b5393 Text : No body can see me Text Encryted : [B@4e79f1 Text Decryted : No body can see me