· 4 years ago · Jul 29, 2021, 05:00 PM
1import java.io.File;
2import java.io.FileInputStream;
3import java.io.FileOutputStream;
4import java.nio.file.Path;
5import java.security.Key;
6import java.security.Provider;
7import java.security.SecureRandom;
8import java.security.Security;
9import java.security.Provider.Service;
10import java.util.Base64;
11import java.util.Set;
12import java.util.TreeSet;
13
14import javax.crypto.Cipher;
15import javax.crypto.KeyGenerator;
16import javax.crypto.SecretKey;
17import javax.crypto.spec.IvParameterSpec;
18
19public class Main {
20
21 public static void main(String[] args) {
22 /*Set<String> algs = new TreeSet<>();
23 for (Provider provider : Security.getProviders()) {
24 provider.getServices().stream()
25 .filter(s -> "Cipher".equals(s.getType()))
26 .map(Service::getAlgorithm)
27 .forEach(algs::add);
28 }
29 algs.forEach(System.out::println);*/
30 SecretKey key = generateKey("AES", 128);
31 byte[] rawData = key.getEncoded();
32 System.out.println(Base64.getEncoder().encodeToString(rawData));
33 encryptFile("AES", key, Path.of("/storage/emulated/0/Download/hud_screen.json").toFile(), Path.of("/storage/emulated/0/Download/hud_screen_obf.json").toFile());
34 }
35
36 public static void encryptFile(String algorithm, SecretKey key, File inputFile, File outputFile) {
37 try {
38 Cipher cipher = Cipher.getInstance(algorithm);
39 //Key ke = cipher.unwrap(cipher.wrap(key), algorithm, Cipher.SECRET_KEY);
40 cipher.init(Cipher.ENCRYPT_MODE, key);
41 FileInputStream inputStream = new FileInputStream(inputFile);
42 FileOutputStream outputStream = new FileOutputStream(outputFile);
43 byte[] buffer = new byte[64];
44 int bytesRead;
45 while ((bytesRead = inputStream.read(buffer)) != -1) {
46 byte[] output = cipher.update(buffer, 0, bytesRead);
47 if (output != null) {
48 outputStream.write(output);
49 }
50 }
51 byte[] outputBytes = cipher.doFinal();
52 if (outputBytes != null) {
53 outputStream.write(outputBytes);
54 }
55 inputStream.close();
56 outputStream.close();
57 } catch (Exception e) {
58 e.printStackTrace();
59 }
60 }
61
62 public static SecretKey generateKey(String algoritm, int size) { //size (128, 192, and 256)
63 try {
64 KeyGenerator keyGenerator = KeyGenerator.getInstance(algoritm);
65 keyGenerator.init(size);
66 SecretKey key = keyGenerator.generateKey();
67 return key;
68 } catch (Exception e) {
69 return null;
70 }
71 }
72}