Advertisement
top_wizard

SymmetricCrypto class

Dec 11th, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.40 KB | None | 0 0
  1. package javaapplication1;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.security.Key;
  5. import javax.crypto.Cipher;
  6. import javax.crypto.KeyGenerator;
  7. import javax.crypto.spec.SecretKeySpec;
  8.  
  9. public class SymmetricCrypto {
  10.     //generate DES key with length 56 to file
  11.     public void generateKey(String keyFile){
  12.         try{
  13.             KeyGenerator keyGen=KeyGenerator.getInstance("DES");
  14.             keyGen.init(56);
  15.             //generate key object
  16.             Key key=keyGen.generateKey();
  17.             //key object is saved by using FileOutputStream to keyFile
  18.             //and the value is generated by getEncoded
  19.             FileOutputStream f=new FileOutputStream(keyFile);
  20.             f.write(key.getEncoded());
  21.             f.close();
  22.         }catch(Exception e){
  23.             System.out.println("Error: "+e.getMessage());
  24.         }        
  25.     }
  26.     //receive key object in file opened by FileInputStream and read by read method
  27.     //length of byte read is the same of length of key object
  28.     public byte[] readKeyFile(String keyFile){
  29.         byte[] fileContent=null;
  30.         try{
  31.             FileInputStream fin=new FileInputStream(keyFile);
  32.             int len=fin.available();
  33.             fileContent=new byte[len];
  34.             fin.read(fileContent,0,len);
  35.             fin.close();
  36.         }catch (Exception e){
  37.             System.out.println("Error "+e);
  38.         }
  39.         return fileContent;
  40.     }
  41.     //Encrypt message with key object in array byte
  42.     public byte[] Encrypt (String message, byte[] keyEncoded){
  43.         byte [] encrypted=null;
  44.         try{
  45.            byte[] input=message.getBytes("UTF8");
  46.            //Activate key using DES
  47.            SecretKeySpec key = new SecretKeySpec(keyEncoded,"DES");
  48.            //initiate cipher object using DES/ECB/PKCS5Padding
  49.            Cipher cipher=Cipher.getInstance("DES/ECB/PKCS5Padding");          
  50.            cipher.init(Cipher.ENCRYPT_MODE,key);
  51.            //start encryption
  52.            encrypted = cipher.doFinal(input);
  53.         }catch(Exception e){
  54.          System.out.println(e.getMessage());
  55.         }        
  56.         return encrypted;
  57.     }
  58.     //Decryption method
  59.     public byte[]Decrypt(byte[]encrypted,byte[]keyEncoded){
  60.         byte[]plainText=null;
  61.         try{
  62.             SecretKeySpec key=new SecretKeySpec(keyEncoded,"DES");
  63.             Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
  64.             cipher.init(Cipher.DECRYPT_MODE,key);
  65.             plainText=cipher.doFinal(encrypted);
  66.         }catch (Exception e){
  67.             System.out.println(e.getMessage());
  68.         }
  69.         return plainText;
  70.     }
  71.     public static void main(String[] args) {
  72.         try{
  73.             SymmetricCrypto crypto=new SymmetricCrypto();
  74.         crypto.generateKey("D:/crypto.key");
  75.         String message="Selamat datang Java";
  76.         byte[]key=crypto.readKeyFile("D:/crypto.key");
  77.         byte[]encrypted=crypto.Encrypt(message, key);
  78.         byte[]plaintex=crypto.Decrypt(encrypted,key);
  79.         System.out.println("message: "+message);
  80.         System.out.println("encrypted: "+new String(encrypted));
  81.         System.out.println("encypted hex: "+StringUtils.getHexString(encrypted));
  82.         System.out.println("plaintext: "+new String(plaintex));
  83.         }catch (Exception e){
  84.             System.out.println("Error: "+e.getMessage());
  85.         }        
  86.     }        
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement