package test;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;
public class Aes_128 {
public static void main(String[] args) {
try {
int numberOfTests = 1000;
long totalEncryptTime = 0;
long totalDecryptTime = 0;
for (int i = 0; i < numberOfTests; i++) {
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] plainText = new byte[16];
new SecureRandom().nextBytes(plainText);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
long startTimeEncrypt = System.nanoTime();
byte[] encryptedText = cipher.doFinal(plainText);
long endTimeEncrypt = System.nanoTime();
cipher.init(Cipher.DECRYPT_MODE, secretKey);
long startTimeDecrypt = System.nanoTime();
byte[] decryptedText = cipher.doFinal(encryptedText);
long endTimeDecrypt = System.nanoTime();
totalEncryptTime += (endTimeEncrypt - startTimeEncrypt);
totalDecryptTime += (endTimeDecrypt - startTimeDecrypt);
}
double averageEncryptTime = (double) totalEncryptTime / numberOfTests;
double averageDecryptTime = (double) totalDecryptTime / numberOfTests;
System.out.println("Average encryption time: " + averageEncryptTime + " nanoseconds");
System.out.println("Average decryption time: " + averageDecryptTime + " nanoseconds");
} catch (Exception e) {
e.printStackTrace();
}
}
}