我被要求编写一个加密程序,将文件中的每个字节都加5,然后再编写另一个程序来解密该文件。这是我编写的程序。但它不起作用。它成功地加密了文件,但无法将其恢复到原始状态。解密的结果只是一个带有一些奇怪符号的文件。
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CryptingFile
{
public static void main(String[] args)
{
if(args.length != 3 || (args[2].compareTo("-en") != 0 && args[2].compareTo("-de") != 0))
{
System.out.println("Usage: sourceFile targetFile -<option>");
System.out.println("<option>: ");
System.out.println(" en : encrypt");
System.out.println(" de: decrypt");
System.exit(0);
}
try
{
File fileInput = new File(args[0]);
File fileOutput = new File(args[1]);
FileInputStream input = new FileInputStream(fileInput);
FileOutputStream output = new FileOutputStream(fileOutput);
if(args[2] == "-en")
{
int value;
while((value = input.read()) != -1)
output.write(value + 5);
}
else
{
int value;
while((value = input.read()) != -1)
output.write(value - 5);
}
input.close();
output.close();
}
catch (FileNotFoundException ex)
{
System.out.println("Error " + args[0] + " not found");
} catch (IOException ex)
{
System.out.println("Error reading file");
}
}
}
这是一个结果,应该看起来像这样:
这是一个测试文件。
但它看起来像这样:
J^_i_iWj[ij_b[$