使用Java的二進制IO,對文件每個字節的數據進行修改,從而達到加密的目的。默認的加密方法是每個字節的數據+5,解密方法則是-5。
不用擔心數字的值超過255而溢出,超過之后的值會減256從而回到0~255。
上代碼
import java.io.*; public class EncryptionAndDeciphering { private static final int OFFSET = 5; private static final String ENCRYPTION_PREFIX = "Encrypted_"; private static final String DECIPHER_PREFIX = "Deciphered_"; public static boolean changeFile(File inFile, int offset, String prefix) { //check input file if (!inFile.exists()) { System.out.println("File does not exist"); return false; } //create output file File outFile = new File(prefix + inFile.getName()); if (outFile.exists()) { return false; } try { if (!outFile.createNewFile()) { return false; } } catch (IOException e) { return false; } //IO try ( BufferedInputStream input = new BufferedInputStream(new FileInputStream(inFile)); // FileInputStream input = new FileInputStream(inFile); BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(outFile)); // FileOutputStream output = new FileOutputStream(outFile); ) { int value; for (; ; ) { value = input.read(); if (value == -1) { break; } output.write(value + offset); //change } } catch (IOException e) { e.printStackTrace(); return false; } return true; } public static boolean encryptFile(File inFile, int offset, String prefix) { return changeFile(inFile, offset, prefix); } public static boolean encryptFile(File inFile) { return changeFile(inFile, OFFSET, ENCRYPTION_PREFIX); } public static boolean decipherFile(File inFile, int offset, String prefix) { return changeFile(inFile, -offset, prefix); } public static boolean decipherFile(File inFile) { return changeFile(inFile, -OFFSET, DECIPHER_PREFIX); } }