Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package javaapplication1;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.security.Key;
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.spec.SecretKeySpec;
- public class SymmetricCrypto {
- //generate DES key with length 56 to file
- public void generateKey(String keyFile){
- try{
- KeyGenerator keyGen=KeyGenerator.getInstance("DES");
- keyGen.init(56);
- //generate key object
- Key key=keyGen.generateKey();
- //key object is saved by using FileOutputStream to keyFile
- //and the value is generated by getEncoded
- FileOutputStream f=new FileOutputStream(keyFile);
- f.write(key.getEncoded());
- f.close();
- }catch(Exception e){
- System.out.println("Error: "+e.getMessage());
- }
- }
- //receive key object in file opened by FileInputStream and read by read method
- //length of byte read is the same of length of key object
- public byte[] readKeyFile(String keyFile){
- byte[] fileContent=null;
- try{
- FileInputStream fin=new FileInputStream(keyFile);
- int len=fin.available();
- fileContent=new byte[len];
- fin.read(fileContent,0,len);
- fin.close();
- }catch (Exception e){
- System.out.println("Error "+e);
- }
- return fileContent;
- }
- //Encrypt message with key object in array byte
- public byte[] Encrypt (String message, byte[] keyEncoded){
- byte [] encrypted=null;
- try{
- byte[] input=message.getBytes("UTF8");
- //Activate key using DES
- SecretKeySpec key = new SecretKeySpec(keyEncoded,"DES");
- //initiate cipher object using DES/ECB/PKCS5Padding
- Cipher cipher=Cipher.getInstance("DES/ECB/PKCS5Padding");
- cipher.init(Cipher.ENCRYPT_MODE,key);
- //start encryption
- encrypted = cipher.doFinal(input);
- }catch(Exception e){
- System.out.println(e.getMessage());
- }
- return encrypted;
- }
- //Decryption method
- public byte[]Decrypt(byte[]encrypted,byte[]keyEncoded){
- byte[]plainText=null;
- try{
- SecretKeySpec key=new SecretKeySpec(keyEncoded,"DES");
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
- cipher.init(Cipher.DECRYPT_MODE,key);
- plainText=cipher.doFinal(encrypted);
- }catch (Exception e){
- System.out.println(e.getMessage());
- }
- return plainText;
- }
- public static void main(String[] args) {
- try{
- SymmetricCrypto crypto=new SymmetricCrypto();
- crypto.generateKey("D:/crypto.key");
- String message="Selamat datang Java";
- byte[]key=crypto.readKeyFile("D:/crypto.key");
- byte[]encrypted=crypto.Encrypt(message, key);
- byte[]plaintex=crypto.Decrypt(encrypted,key);
- System.out.println("message: "+message);
- System.out.println("encrypted: "+new String(encrypted));
- System.out.println("encypted hex: "+StringUtils.getHexString(encrypted));
- System.out.println("plaintext: "+new String(plaintex));
- }catch (Exception e){
- System.out.println("Error: "+e.getMessage());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement