Hi, I want to encrypt a file and decrypt it on another host.

For decryption on another host I guess I need to transfer the cipher... how can this be done? How can you write a Cipher to disk?
Or am I completely on a wron track?

The following code is doing it already on one host:

 

package test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.security.Provider;

import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;

// Source: http://stackoverflow.com/questions/16390526/using-des-to-encrypt-and-decrypt-a-file-in-java

public class DesTest {

public static void main(String[] args) {
  // TODO Auto-generated method stub

 
  // Create a new key to encrypt and decrypt the file
  byte[] key = "password".getBytes();

  // Get a cipher object in encrypt mode
  Cipher cipher = null;
  try {
      DESKeySpec dks = new DESKeySpec(key);
      SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
      SecretKey desKey = skf.generateSecret(dks);
      cipher = Cipher.getInstance("DES");
      cipher.init(Cipher.ENCRYPT_MODE, desKey);
  } catch (Exception e) {
      System.err.println("[CRITICAL] Incryption chiper error");
  }

  // Encrypt the file
  try {  
   FileOutputStream fos = new FileOutputStream("test");
   CipherOutputStream cos = new CipherOutputStream(fos, cipher);
   ObjectOutputStream oos = new ObjectOutputStream(cos);
   oos.writeObject("Secret line1...\nline2...");
   oos.flush();
   oos.close();
 
  } catch (Exception e) {
      System.err.println("[CRITICAL] Error encrypting data: " + e.getMessage());
      e.printStackTrace();
  }

  // Get a cipher object in decrypt mode
  try {
      DESKeySpec dks = new DESKeySpec(key);
      SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
      SecretKey desKey = skf.generateSecret(dks);
      cipher = Cipher.getInstance("DES");
      cipher.init(Cipher.DECRYPT_MODE, desKey);
  } catch (Exception ex) {
      System.err.println("[CRITICAL] Incryption chiper error");
  }

  // Decrypt the file
  try {
      System.out.println((String) new ObjectInputStream(new CipherInputStream(new FileInputStream("test"), cipher)).readObject());
  } catch (Exception e) {
      System.err.println("[CRITICAL] Error decrypting data: " + e.getMessage());
      e.printStackTrace();
  }
}

}

FacebookTwitterLinkedin
Pin It
Joomla Tutorials for Beginners