在Ubuntu上使用Java進行數據加密和解密,你可以使用Java Cryptography Extension (JCE)提供的API。以下是一個簡單的示例,展示了如何使用Java的Cipher類來實現AES(高級加密標準)加密和解密。
首先,確保你的Ubuntu系統上安裝了Java開發工具包(JDK)。如果沒有安裝,可以通過以下命令安裝:
sudo apt update
sudo apt install default-jdk
然后,創建一個Java文件,例如EncryptionExample.java,并添加以下代碼:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class EncryptionExample {
public static void main(String[] args) throws Exception {
String originalData = "Hello, World!";
System.out.println("Original Data: " + originalData);
// 加密數據
String encryptedData = encrypt(originalData, "mySecretKey123");
System.out.println("Encrypted Data: " + encryptedData);
// 解密數據
String decryptedData = decrypt(encryptedData, "mySecretKey123");
System.out.println("Decrypted Data: " + decryptedData);
}
public static String encrypt(String data, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
}
public static String decrypt(String encryptedData, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decodedBytes = Base64.getDecoder().decode(encryptedData);
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
return new String(decryptedBytes);
}
}
在這個例子中,我們使用了AES算法進行加密和解密。encrypt方法接受明文數據和密鑰作為參數,返回加密后的Base64編碼字符串。decrypt方法接受加密后的數據和密鑰作為參數,返回解密后的明文數據。
要運行這個示例,請在終端中執行以下命令:
javac EncryptionExample.java
java EncryptionExample
請注意,這個例子使用了ECB模式,它不推薦用于實際應用,因為它不提供足夠的安全性。在實際應用中,你應該使用更安全的模式,如CBC(Cipher Block Chaining)模式,并且需要一個隨機的初始化向量(IV)。此外,密鑰管理也非常重要,應該使用安全的方式來存儲和訪問密鑰。
對于更高級的加密需求,你可以考慮使用Java Cryptography Architecture (JCA)提供的其他算法和功能,或者使用第三方加密庫,如Bouncy Castle。