AES-128加密算法Java代码测量加密解密需要的时间
时间: 2024-09-10 10:06:48 浏览: 43
php使用openssl_encrypt中的AES-128-ECB加密解密
AES-128是一种对称加密算法,它使用相同的密钥进行加密和解密。在Java中,你可以使用`javax.crypto.Cipher`类来操作AES-128。为了测量加密和解密时间,我们可以创建一个简单的计时函数,并多次运行加密和解密过程以获取平均时间。
以下是一个基本的例子,展示了如何测量AES-128加密和解密的耗时:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
public class AesTimeMeasurement {
private static final String ALGORITHM = "AES";
private static final byte[] KEY = new byte[16]; // 128位AES key
private static final byte[] INPUT = "Hello, World!".getBytes(); // 示例输入
public static void main(String[] args) {
SecureRandom random = new SecureRandom();
random.nextBytes(KEY);
Cipher cipher = Cipher.getInstance(ALGORITHM);
long startEncrypt, endEncrypt;
long startDecrypt, endDecrypt;
try {
// 初始化密钥
SecretKeySpec secretKey = new SecretKeySpec(KEY, ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
// 计量加密时间
startEncrypt = System.nanoTime();
byte[] encrypted = cipher.doFinal(INPUT);
endEncrypt = System.nanoTime();
System.out.println("Encryption time (average): " + calculateAverageTime(startEncrypt, endEncrypt));
// 清理并初始化用于解密
cipher.init(Cipher.DECRYPT_MODE, secretKey);
// 计量解密时间
startDecrypt = System.nanoTime();
byte[] decrypted = cipher.doFinal(encrypted);
endDecrypt = System.nanoTime();
System.out.println("Decryption time (average): " + calculateAverageTime(startDecrypt, endDecrypt));
} catch (Exception e) {
e.printStackTrace();
}
}
private static double calculateAverageTime(long startTime, long endTime) {
return (endTime - startTime) * 1e-9; // 转换为秒
}
}
```
这个代码首先生成随机密钥,然后分别计算加密和解密过程的平均时间。注意这只是一个基础示例,实际应用中可能还需要处理异常和其他安全细节。
阅读全文