提供一个Java默认情况下支持规格的ASE密钥例子
时间: 2024-06-12 22:05:00 浏览: 216
Java实现AES加密算法的简单示例分享
5星 · 资源好评率100%
由于ASE(Advanced Encryption Standard)是一种对称加密算法,因此需要使用相同的密钥进行加密和解密。以下是一个使用Java默认情况下支持规格的ASE密钥例子:
```java
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class AesExample {
private static final String ALGORITHM = "AES";
private static final int KEY_SIZE = 128;
public static void main(String[] args) throws Exception {
String plainText = "Hello, world!"; // 要加密的明文
// 生成随机密钥
SecretKey secretKey = generateSecretKey();
// 加密
byte[] cipherText = encrypt(plainText.getBytes(StandardCharsets.UTF_8), secretKey);
// 将密文转换为Base64字符串
String cipherTextBase64 = Base64.getEncoder().encodeToString(cipherText);
System.out.println("Cipher text: " + cipherTextBase64);
// 解密
byte[] decryptedText = decrypt(Base64.getDecoder().decode(cipherTextBase64), secretKey);
// 将解密后的明文转换为字符串
String decryptedTextStr = new String(decryptedText, StandardCharsets.UTF_8);
System.out.println("Decrypted text: " + decryptedTextStr);
}
private static SecretKey generateSecretKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
keyGenerator.init(KEY_SIZE);
return keyGenerator.generateKey();
}
private static byte[] encrypt(byte[] plainText, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(plainText);
}
private static byte[] decrypt(byte[] cipherText, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return cipher.doFinal(cipherText);
}
}
```
在这个例子中,我们首先生成一个128位的随机密钥,然后使用该密钥对“Hello, world!”进行加密。加密后的密文被转换为Base64字符串,以便在网络上进行传输。然后我们再将该密文解密,并将解密后的明文输出到控制台上。
请注意,由于AES是一种对称加密算法,因此如果密钥被泄露,攻击者可以轻松地解密所有加密的数据。因此,密钥的保护非常重要,建议使用安全的密钥管理方案来管理密钥。
阅读全文