Implementation of Java Cryptography Extension (JCE) in Programs
Dear friend,
JCE is a huge topic in Java programming language. There are many books written on the same.
I am writing a basic example to show how it works, for complete details and loop holes please
google it:
I will show: how do use JCE to encrypt or decrypt a text in Data Encryption Standard (DES) mechanism.
Steps to do:
1) Generate the key.
2) Create the Cipher.
3) Initialize the Cipher for Encryption using key.
4) Encrypt the text.
5) Again initialize the Cipher for Decryption using the same key.
6) Decrypt the text.
//CryptoMain.java
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 CryptoMain {
public static void main(String[] argv) {
try {
//Generate the Key
KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
SecretKey myDesKey = keygenerator.generateKey();
//Create the cipher
Cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// Initialize the cipher for encryption
desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
//sensitive information
byte[] text = "Password_Content".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 Encrypted : " + textEncrypted);
//Initialize the same cipher for decryption, using the same key
desCipher.init(Cipher.DECRYPT_MODE, myDesKey);
//Decrypt the text
byte[] textDecrypted = desCipher.doFinal(textEncrypted);
System.out.println("Text Decrypted : " + 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();
}
}
}
//Output:
Text [Byte Format] : [B@1f585b
Text : Password_Content
Text Encrypted : [B@1f593c
Text Decrypted : Password_Content
Details about creation of cipher: Create a Cipher instance from Cipher class, specify the following
information and separated by a slashes (/).
a. Algorithm name
b. Mode (optional)
c. 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.
---------------------END----------------------
Thursday, March 15, 2012
Implementation of Java Cryptography Extension
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment