· 7 years ago · Apr 01, 2018, 10:40 PM
1package javaapplication10;
2
3
4import sun.misc.BASE64Decoder;
5import sun.misc.BASE64Encoder;
6
7import javax.crypto.*;
8import javax.crypto.spec.IvParameterSpec;
9import javax.crypto.spec.SecretKeySpec;
10import java.io.IOException;
11import java.security.InvalidAlgorithmParameterException;
12import java.security.InvalidKeyException;
13import java.security.NoSuchAlgorithmException;
14import java.security.SecureRandom;
15import java.util.Base64;
16import java.util.Base64.Decoder;
17
18import sun.misc.BASE64Encoder;
19import sun.misc.BASE64Decoder;
20
21public class JavaApplication10 {
22 private static String ALGO="AES/CBC/PKCS5Padding";
23
24 public static String MIC(String a, SecretKey secretKey, IvParameterSpec ivParameterSpec ) throws Exception
25 {
26 Cipher cipher = Cipher.getInstance("AES/CTR/PKCS5Padding");
27
28 cipher.init(Cipher.ENCRYPT_MODE,secretKey,ivParameterSpec);
29 String output;
30 output = new BASE64Encoder().encode(cipher.doFinal(a.getBytes()));
31 return output;
32
33 }
34 public static void main(String[] args) throws Exception, NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, IOException {
35 Cipher cipher = Cipher.getInstance(ALGO);
36 KeyGenerator key = KeyGenerator.getInstance("AES");
37 key.init(128);
38 SecretKey secretKey = key.generateKey();
39 byte[] bs = new byte[16];
40 SecureRandom random = new SecureRandom();
41 random.nextBytes(bs);
42 IvParameterSpec ivParameterSpec = new IvParameterSpec(bs);
43 cipher.init(Cipher.ENCRYPT_MODE,secretKey,ivParameterSpec);
44 String output;
45 output = new BASE64Encoder().encode(cipher.doFinal("BezbednostNaKompjuterskiSistemi".getBytes()));
46 System.out.println(new String(output));
47
48 // MIC Calculation
49 String tekst = "BezbednostNaKompjuterskiSistemi";
50 String MIC1 = MIC(tekst, secretKey, ivParameterSpec );
51 System.out.println(MIC1);
52 //Decription
53 cipher.init(Cipher.DECRYPT_MODE,secretKey,ivParameterSpec);
54 byte[] outputDecoder;
55 outputDecoder = outputDecoder = cipher.doFinal(new BASE64Decoder().decodeBuffer(output));
56 System.out.println(new String(outputDecoder));
57 String MIC2 = MIC(new String(outputDecoder), secretKey, ivParameterSpec);
58 System.out.println(MIC2);
59 /*
60 byte[] encVal = cipher.doFinal("hello".getBytes());
61 String encryptedValue = new BASE64Encoder().encode(encVal);
62 System.out.println(encryptedValue);
63 byte[] decValue = cipher.doFinal(encryptedValue.getBytes());
64 System.out.println(new String(decValue));
65 */
66 }
67}