溫馨提示×

Ubuntu Java如何實現數據加密與解密

小樊
47
2025-05-21 20:47:26
欄目: 編程語言

在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。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女