· 6 years ago · Oct 17, 2019, 10:36 AM
1package KrypteringPackage;
2
3import javax.crypto.*;
4import javax.crypto.spec.*;
5import java.security.*;
6import java.io.*;
7
8public class DecryptHandler {
9
10 public static void main(String[] args) {
11
12 if (args.length == 3)
13 {
14 String encryptedData = args[0];
15 String secretKeyLocation = args[1];
16 String decryptedData = args[2];
17
18
19 byte[] data = null;
20 SecretKey secretKey = null;
21
22 try {
23 FileInputStream fileIn = new FileInputStream(encryptedData); //lägger in krypterade datan i en byte[]
24 ObjectInputStream objectIn = new ObjectInputStream(fileIn);
25 data = (byte[]) objectIn.readObject();
26 objectIn.close();
27 fileIn.close();
28 }
29 catch (IOException | ClassNotFoundException e1) {
30 e1.printStackTrace();
31 }
32
33 try { // Binär deserializerar nyckeln eftersom det inte går att skriva det i plan text sen konvertera den till secretKey
34
35 FileInputStream fileIn = new FileInputStream(secretKeyLocation);
36
37 ObjectInputStream objectIn = new ObjectInputStream(fileIn);
38 secretKey = (SecretKey) objectIn.readObject();
39 objectIn.close();
40 fileIn.close();
41 }
42 catch (IOException | ClassNotFoundException e1) {
43 e1.printStackTrace();
44 }
45
46 data = encryptedData.getBytes();
47 byte[] decryptedDataWithKey = null;
48
49 Cipher cipher;
50 try {
51
52 cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); // algoritm som används
53 cipher.init(Cipher.DECRYPT_MODE, secretKey); // väljer att man ska dekryptera
54
55 decryptedDataWithKey = cipher.doFinal(data); //enkrypterade datan blir dekrypterad
56
57 } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
58 e.printStackTrace();
59 }
60
61
62
63 Writer writer;
64 try { // Skriver den krypterade datan till en ny fil med namnet på encryptedData
65 writer = new BufferedWriter(new OutputStreamWriter(
66 new FileOutputStream(decryptedData + ".txt"), "utf-8"));
67 writer.write(decryptedDataWithKey.toString());
68
69 writer.flush();
70 System.out.println("decrypted " + encryptedData + " to file " + decryptedData);
71
72 writer.close();
73 } catch (IOException e) {
74 // TODO Auto-generated catch block
75 e.printStackTrace();
76 }
77
78
79 }
80 else
81 {
82 System.out.println("Incorrect Syntax. java EncryptHandler <encryptedData> <secretKey> <decryptetData>");
83 }
84 }
85}