久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java如何實現文件加密與解密

172次閱讀
沒有評論

共計 2280 個字符,預計需要花費 6 分鐘才能閱讀完成。

在 Java 中實現文件加密與解密可以使用各種加密算法和 IO 流來實現。下面是一個示例代碼,使用 AES 對稱加密算法和文件 IO 流來實現文件的加密和解密:

import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
public class FileEncryption {public static void encrypt(String key, File inputFile, File outputFile) throws Exception {doCrypto(Cipher.ENCRYPT_MODE, key, inputFile, outputFile);
}
public static void decrypt(String key, File inputFile, File outputFile) throws Exception {doCrypto(Cipher.DECRYPT_MODE, key, inputFile, outputFile);
}
private static void doCrypto(int cipherMode, String key, File inputFile, File outputFile) throws Exception {SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(cipherMode, secretKey);
FileInputStream inputStream = new FileInputStream(inputFile);
FileOutputStream outputStream = new FileOutputStream(outputFile);
if (cipherMode == Cipher.ENCRYPT_MODE) {CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, cipher);
writeBytes(inputStream, cipherOutputStream);
cipherOutputStream.close();} else if (cipherMode == Cipher.DECRYPT_MODE) {CipherInputStream cipherInputStream = new CipherInputStream(inputStream, cipher);
writeBytes(cipherInputStream, outputStream);
cipherInputStream.close();}
inputStream.close();
outputStream.close();}
private static void writeBytes(InputStream inputStream, OutputStream outputStream) throws IOException {byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);
}
}
public static void main(String[] args) {
try {File inputFile = new File("input.txt");
File encryptedFile = new File("encrypted.txt");
File decryptedFile = new File("decrypted.txt");
String key = "ThisIsASecretKey";
encrypt(key, inputFile, encryptedFile);
System.out.println("File encrypted successfully.");
decrypt(key, encryptedFile, decryptedFile);
System.out.println("File decrypted successfully.");
} catch (Exception e) {e.printStackTrace();
}
}
}

在上述代碼中,我們定義了兩個方法 encryptdecrypt,分別用于加密和解密文件。在 doCrypto 方法中,我們創建了一個 AES 加密算法的 Cipher 對象,并使用一個密鑰初始化該對象。然后根據加密或解密模式,使用 CipherInputStreamCipherOutputStream來讀取和寫入文件內容。加密和解密過程中使用的密鑰長度必須是 16、24 或 32 字節,所以我們使用密鑰的字節數組來創建一個 SecretKeySpec 對象。
main 方法中,我們定義了輸入文件、加密后文件和解密后文件的路徑,并指定一個密鑰。然后調用 encrypt 方法對輸入文件進行加密,再調用 decrypt 方法對加密后的文件進行解密。
請注意,這只是一個簡單的示例,實際使用時需要根據具體需求進行優化和安全性考慮。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計2280字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宜兴市| 宁明县| 海口市| 久治县| 仲巴县| 琼中| 武义县| 洞头县| 安阳县| 西宁市| 昌都县| 荆门市| 蒲城县| 沾化县| 阿荣旗| 凭祥市| 天门市| 淳化县| 博野县| 桓台县| 开鲁县| 平山县| 乡城县| 永宁县| 揭阳市| 开封市| 金平| 南溪县| 日喀则市| 高平市| 乌兰察布市| 保德县| 丹寨县| 闻喜县| 杭锦后旗| 安西县| 白城市| 介休市| 南汇区| 东乌| 长武县|