Hi,
After a long time, during which I was very busy by my personal project (building my house), I am come back with a simple article concerning the encrypting of message via the standard Cipher class. This class provides the functionality of a cryptographic cipher for encryption and decryption. It forms the core of the Java Cryptographic Extension (JCE) framework.
In the following example, I will encrypt and decrypt a message via the symmetric algorithm “AES/ECB/PKCS5Padding” (via a secret key). A transformation is of the form “algorithm/mode/padding” or “algorithm”.
package com.ho.crypto.test1; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Random; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; /** * Encrypt / Decrypt your message with Cipher Class. * @author huseyin * */ public class MyProtectorSingleton { // --------------------------------- PRIVATE ATTRIBUTES private static MyProtectorSingleton instance = null; private SecretKeySpec certificate = null; private Cipher aesEncrypt = null; private Cipher aesDecrypt = null; // ----------------------------------- CONSTRUCTORS private MyProtectorSingleton() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{ Random myRandom = new Random(); byte[] myBytesArray = new byte[16]; myRandom.nextBytes(myBytesArray); certificate = new SecretKeySpec(myBytesArray, 0, 16, "AES"); aesEncrypt = Cipher.getInstance("AES/ECB/PKCS5Padding"); aesEncrypt.init(Cipher.ENCRYPT_MODE, certificate); aesDecrypt = Cipher.getInstance("AES/ECB/PKCS5Padding"); aesDecrypt.init(Cipher.DECRYPT_MODE,certificate); } public static synchronized MyProtectorSingleton getInstance() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{ if(instance == null){ instance = new MyProtectorSingleton(); } return instance; } // ----------------------------- PUBLIC FUNCTIONS public byte[] protect(String toProtect) throws IllegalBlockSizeException, BadPaddingException{ byte[] cipherText = aesEncrypt.doFinal(toProtect.getBytes()); return cipherText; } public String unprotect(byte[] toUnprotect) throws IllegalBlockSizeException, BadPaddingException{ String cleartext = new String(aesDecrypt.doFinal(toUnprotect)); return cleartext; } public static void main(String[] args) { try{ String toProtect = "this is my message"; MyProtectorSingleton myProtector = MyProtectorSingleton.getInstance(); // byte[] msgProtected = myProtector.protect(toProtect); System.out.println("msgProtected="+msgProtected); // String str = myProtector.unprotect(msgProtected); System.out.println(str); }catch(Exception ex){ ex.printStackTrace(); } } }
That’s all!!!!
Kind regards,
Huseyin OZVEREN