【问题标题】:How can I decrypt a text file with my decryption class?如何使用我的解密类解密文本文件?
【发布时间】:2020-08-23 10:09:24
【问题描述】:

我有一个文本文件,需要使用以下代码解密:

//Rot13加解密 公共类 Rot13 {

private char [] letter = {' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
                              'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

private int index = 0;

public String encrypt(String s){

    String str = "";
    //forloop to get the each character from the passing string
    for(int i=0; i<s.length(); i++){
        char c = Character.toUpperCase(s.charAt(i));
        if(c == ' '){
            str += ' ';
        }else {
            //forloop to check the index of the character from array
            for (int j = 1; j < letter.length; j++) {
                if (letter[j] == c) {
                    index = j;
                }
            }
            //shifting characters based on rot13
            index = index % 26;
            index = index + 13;
            index = index % 26;
            if (index == 0)
                index = 26;
            str += letter[index];
        }
    }

    return str;
}//end encrypt

public String decrypt(String s){

    String str = "";
    //forloop to get the each character from the passing string
    for(int i=0; i<s.length(); i++){
        char c = Character.toUpperCase(s.charAt(i));
        if(c == ' '){
            str += ' ';
        }else {
            //forloop to check the index of the character from array
            for (int j = 1; j < letter.length; j++) {
                if (letter[j] == c) {
                    index = j;
                }
            }
            //shifting characters based on rot13
            index = index % 26;
            index = index + 13;
            index = index % 26;
            if (index == 0)
                index = 26;
            str += letter[index];
        }
    }

    return str;
}//end decrypt

}//结束类Rot13

我想解密使用 File 类制作的文件。

导入 java.io.*; 导入 java.util.Scanner;

公共类 FileExample 扩展 Rot13 {

public static void main(String [] args) {

    try {

        //create file object for input.txt
        File in_file = new File("src/text.txt");
        //create file object for output.txt
        File out_file = new File("src/output.txt");

        //read the input.txt file with Scanner
        Scanner read = new Scanner(in_file);
        //write the output.txt file with PrintWriter
        PrintWriter w = new PrintWriter(out_file);

        while(read.hasNextLine()){
            w.write(read.nextLine());
        }

    while(read.hasNext()){
        System.out.println(read.next());
    }
        //don't forget to close
        w.close();

    }
        catch(Exception ex) {
            ex.getStackTrace();
    }
}

}

我不知道如何将带有加密消息的文本文件发送到解密类。谁能帮帮我?

谢谢。

【问题讨论】:

  • 将文件内容读入String,创建Rot13类的实例,调用decrypt方法,传递您之前从文件内容创建的String

标签: java file encryption rot13


【解决方案1】:

您的加密和解密方法需要一个字符串作为输入。

您可以使用File.readAllBytes() 方法在一行中获取文件的全部内容。 FileExample 扩展了 Rot13,但加密和解密方法不是静态的(静态方法通常是个坏主意)。

所以,要调用decrypt方法,首先需要创建FileExamples的实例,然后调用实例上的decrypt方法。实际上,最好将您的逻辑从 main 方法移动到 FileExample 中的非静态方法中,并且只从 main 中移动所有该方法。

最后,您使用Files.write() 方法将解密后的String 在一行中写入输出文件

请看下面的代码:

public class FileExample extends Rot13 {

    public void decryptFile(String inputFilePath, String outputFilePath){

        try {
            //Get the encrypted file contents as a String
            String encryptedContents = new String(Files.readAllBytes(Paths.get(inputFilePath)));

            //Call the decrypt method - inherited from Rot13
            String decryptedContents = decrypt(encryptedContents);

            //Write the decrypted content to the output file
            Files.write(Paths.get(outputFilePath), decryptedContents.getBytes());
        }
        catch(Exception ex) {
            ex.getStackTrace();
        }
    }

    public static void main(String [] args) {
        FileExample example = new FileExample();
        example.decryptFile("src/text.txt", "src/output.txt");
    }
}

【讨论】:

  • 感谢您使用代码示例进行解释。
猜你喜欢
  • 2011-06-21
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2014-10-24
  • 2011-08-15
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
相关资源
最近更新 更多