那么我将详细讲解“Java实现AES加密算法的简单示例分享”的完整攻略,包括实现步骤,示例说明等。
第一步:引入依赖
Java实现AES加密算法需要引入如下两个依赖:
<dependency>
<groupId>javax.crypto</groupId>
<artifactId>javax.crypto-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.68</version>
</dependency>
第二步:生成密钥
在Java实现AES加密算法之前,需要生成一个密钥,如下所示:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey key = keyGen.generateKey();
第三步:加密
使用上一步生成的密钥进行加密,如下所示:
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal(input.getBytes());
其中,input
是需要加密的字符串,encrypted
是加密后的字节数组。
第四步:解密
使用同样的密钥进行解密,如下所示:
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decrypted = cipher.doFinal(encrypted);
其中,encrypted
是加密后的字节数组,decrypted
是解密后的字节数组。
示例说明
示例一:加密字符串
下面给出一个加密字符串的例子:
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.Cipher;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Security;
import java.security.NoSuchAlgorithmException;
public class Main {
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
String input = "Hello, World!";
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey key = keyGen.generateKey();
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal(input.getBytes());
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decrypted = cipher.doFinal(encrypted);
System.out.println(new String(encrypted));
System.out.println(new String(decrypted));
}
}
在上述例子中,我们使用了一个128位长度的密钥,将字符串"Hello, World!"进行加密和解密。
示例二:加密文件
下面给出一个加密文件的例子:
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.Cipher;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Security;
import java.security.NoSuchAlgorithmException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.File;
public class Main {
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
File inputFile = new File("input.txt");
File encryptedFile = new File("encrypted.txt");
File decryptedFile = new File("decrypted.txt");
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey key = keyGen.generateKey();
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, key);
Files.write(Paths.get(encryptedFile.getAbsolutePath()), cipher.doFinal(Files.readAllBytes(Paths.get(inputFile.getAbsolutePath()))));
cipher.init(Cipher.DECRYPT_MODE, key);
Files.write(Paths.get(decryptedFile.getAbsolutePath()), cipher.doFinal(Files.readAllBytes(Paths.get(encryptedFile.getAbsolutePath()))));
}
}
在上述例子中,我们使用了同样的128位长度的密钥,将文件"input.txt"进行加密和解密,并输出加密后的文件"encrypted.txt"和解密后的文件"decrypted.txt"。
希望这些示例可以帮助您快速掌握Java实现AES加密算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现AES加密算法的简单示例分享 - Python技术站