java加密类_java加密类Cipher的使用
时间: 2024-05-07 14:20:12 浏览: 12
Java中的加密类Cipher是一个非常重要的类,用于加密和解密数据。它是Java Cryptography Architecture (JCA)的一部分,提供了许多加密算法的实现,如DES、AES、RSA等。下面是Cipher类的使用方法:
1. 创建Cipher对象:Cipher对象是通过调用Cipher.getInstance()方法创建的。需要传入一个加密算法的名称,如AES、DES等。
```java
Cipher cipher = Cipher.getInstance("AES");
```
2. 初始化Cipher对象:Cipher对象需要被初始化为加密模式或解密模式。可以通过调用init()方法实现。需要传入一个密钥和一个模式参数,如加密模式(Cipher.ENCRYPT_MODE)或解密模式(Cipher.DECRYPT_MODE)。
```java
Key key = new SecretKeySpec(keyBytes, "AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
```
3. 加密或解密数据:使用已经初始化的Cipher对象,可以使用doFinal()方法来加密或解密数据。需要传入要加密或解密的数据。
```java
byte[] encryptedData = cipher.doFinal(plainText.getBytes());
```
完整的加密和解密示例代码如下:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
public class CipherExample {
public static void main(String[] args) throws Exception {
String plainText = "hello world";
byte[] keyBytes = "0123456789abcdef".getBytes();
// Create cipher object
Cipher cipher = Cipher.getInstance("AES");
// Initialize cipher object
Key key = new SecretKeySpec(keyBytes, "AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
// Encrypt data
byte[] encryptedData = cipher.doFinal(plainText.getBytes());
System.out.println("Encrypted data: " + new String(encryptedData));
// Initialize cipher object for decryption
cipher.init(Cipher.DECRYPT_MODE, key);
// Decrypt data
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println("Decrypted data: " + new String(decryptedData));
}
}
```
上述代码使用AES算法加密和解密数据。注意,密钥的长度必须是16个字节。如果需要使用其他算法或长度的密钥,需要进行相应的修改。