91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java如何對文件流加密

小億
122
2023-12-29 16:33:33
欄目: 編程語言

Java可以使用密碼流對文件流進行加密。密碼流是Java IO庫提供的一種特殊的輸入/輸出流,它可以對底層的文件流進行加密和解密操作。下面是一個簡單的示例代碼,展示了如何使用密碼流對文件進行加密。

import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

public class FileEncryption {
    public static void main(String[] args) {
        String sourceFile = "source.txt";
        String encryptedFile = "encrypted.txt";
        String decryptedFile = "decrypted.txt";
        String key = "1234567890abcdef"; // 密鑰,16位字符

        try {
            encrypt(sourceFile, encryptedFile, key);
            System.out.println("文件加密成功!");
            
            decrypt(encryptedFile, decryptedFile, key);
            System.out.println("文件解密成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void encrypt(String sourceFile, String encryptedFile, String key) throws Exception {
        File inputFile = new File(sourceFile);
        File outputFile = new File(encryptedFile);

        FileInputStream inputStream = new FileInputStream(inputFile);
        FileOutputStream outputStream = new FileOutputStream(outputFile);

        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

        CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, cipher);

        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            cipherOutputStream.write(buffer, 0, bytesRead);
        }

        cipherOutputStream.close();
        inputStream.close();
    }

    public static void decrypt(String encryptedFile, String decryptedFile, String key) throws Exception {
        File inputFile = new File(encryptedFile);
        File outputFile = new File(decryptedFile);

        FileInputStream inputStream = new FileInputStream(inputFile);
        FileOutputStream outputStream = new FileOutputStream(outputFile);

        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);

        CipherInputStream cipherInputStream = new CipherInputStream(inputStream, cipher);

        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = cipherInputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }

        outputStream.close();
        cipherInputStream.close();
    }
}

在上面的示例中,我們使用了AES算法對文件進行加密和解密。需要注意的是,AES算法需要一個16位的密鑰,因此我們在代碼中使用了一個16位的字符串作為密鑰。實際應用中,你可能需要使用更安全的密鑰生成方式。

這只是一個簡單的示例,真實情況下你可能需要處理更多的異常情況,并采用更安全的加密方式。

0
兴安县| 上林县| 石景山区| 克山县| 响水县| 怀远县| 南陵县| 安化县| 抚顺市| 涡阳县| 夏邑县| 璧山县| 会东县| 绵阳市| 伊吾县| 呼伦贝尔市| 黄梅县| 达拉特旗| 吴忠市| 南溪县| 平潭县| 海晏县| 确山县| 崇仁县| 塔城市| 宽城| 从江县| 万荣县| 涟源市| 邮箱| 穆棱市| 当雄县| 平原县| 故城县| 岳池县| 高阳县| 仙游县| 葫芦岛市| 奉新县| 任丘市| 达拉特旗|