当前位置: 首页 > 知识库问答 >
问题:

我如何在Java的caesar加密中包含文件处理?

杭涵映
2023-03-14

这是我的代码,用来简单地加密文本,但我的老师说,我必须编程一个文件处理。但我不知道如何对此编程,也不知道如何加密和解密导入的文件。请帮帮我!

package caesarchiffre;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Caeser {

    public static void main(String[] args) throws IOException {

    int key = 6; //Einwegschlüssel für Ver- und Entschlüsselung

    String text = "Hallo!";
    System.out.println(text);

    char[] chars = text.toCharArray(); //Character-Array mit String Methode zum umwandeln in Char

    //Verschlüsselung
    for(char c :chars) {
        c += key;
        System.out.print(c);
    }
    
    //Entschlüsselung
    //for(char c :chars) {
    //    c -= key;
    //    System.out.print(c); }

   }
}

共有1个答案

苗学民
2023-03-14

下面是一些关于文件处理的概念,简单解释一下。请阅读关于他们的现有资源,也!

扫描文件:使用Javascanner

以下是如何实现它的:

import java.util.Scanner;
import java.util.File;
File file = new File(pathname)
Scanner scanner = new Scanner(file) 
import java.util.FileWriter;

FileWriter fileWriter = new FileWriter(pathname);
//pathname of file to write to

fileWriter.write("Hello World! This is the first Caesar Cipher of Elias M.");

您可以使用扫描器文件写入器执行任何您想要的操作。但是,在您的情况下,您正在扫描一个文件,可能是要对其中的文本进行编码。因此,您可以执行以下操作:

char[] alphabet = {'a', 'b','c'};//... and so on
char[] shiftedAlphabet = {'r','s','t'};//...and so on

这是一个示例,您可以将每个字母往上移16位:

/*
a--->r
b--->s
c--->t
*/

开始扫描文件:

while (scanner.hasNext()){
    /*
    while scanner has a next String. That is, your text is not over:
    */
    String next = scanner.next(); //the next string in the file
    StringBuilder code = new StringBuilder(); //empty for now
    for (int i = 0; i < next.length; i++){

        char ch = next.charAt(i); 
        /*
        explanation of charAt(index):
        Let us say that your word is "caesar". 
        the loop goes to charAt(0), which is 'c'
        then it goes to charAt(1), which is 'a', and so on. 
        */
        for (int j = 0; j < alphabet.length; j++){
            char letter = alphabet[j];
            char shiftedEquivalent = alphabetShifted[j]
            if (ch == letter){
                code.append(shiftedEquivalent);
            }
        }
    }
    fileWriter.write(code); //write your first word into the file.
    //This loops over and over until the text file has no more text.
}

请仔细查看上面的for循环。使用我们的理论文件:

--扫描仪去“凯撒”

-for循环选择“c”

希望这篇文章能帮到你。“希望这有帮助”--但这是禁忌。

 类似资料:
  • 我正在尝试加入一些。txt。png和其他文件转换为我的jar文件。我在src文件夹下创建了一个名为“resources”的文件夹。从IDE运行程序时,程序可以正确找到所有文件。但是,只要我用代码创建一个jar文件,就找不到任何文件。当然,我使用了getClass()。getResource(…)。 有人能帮我吗?:/

  • 我还使用tkinter用Python3.7编写了一个程序。因为我使用的是外部图片,所以当我将所有内容编译成一个exe时,我需要包含它们。我尝试过执行,但仍然出现以下错误: _特金特。Tcl错误:无法打开“files/bg.png”:没有这样的文件或目录 代码如下: 我做错了什么?我也尝试过添加二进制文件,将该文件添加到我的spec文件中。我真的搞不懂!

  • 问题内容: 大家好。我正在为一个学校项目工作,在该项目中,我们获得了.class文件,但没有提供包含在我们代码中的源代码。我正在使用Eclipse,并且希望将文件包含在我的项目中,以便可以从中实例化对象并使用它。 该文件是TokenizerImpl.class,我想这样使用它: 我将文件放在项目文件夹中,Eclipse表示“ TokenizeImpl无法解析为类型”,我认为这意味着它找不到类或源。

  • 问题内容: 例如,我有一个名为的文件,其中包含个人信息(身份证,姓名,薪水): 如何编写允许用户输入人的ID并补充薪水的Java代码?最终输出将如下所示: 输入ID:A123 输入补充工资:2000 运行程序后的file.txt: 这是我到目前为止所做的,但没有成功: 我刚接触这些东西。任何帮助将不胜感激。 问题答案: 您必须使用从原始文件逐行读取它的方法。搜索并用新号码替换薪水。将内容写入新的临

  • 问题内容: 我需要知道如何创建AES并使用它来加密和解密Java中的文件。 问题答案: 尝试使用并传入。有关快速示例,请参见http://www.java2s.com/Tutorial/Java/0490__Security/UsingCipherOutputStream.htm,而仅使用它。

  • 问题内容: 在我的程序中,我多次从控制台读取整数。每次,我都需要输入这一行。 我习惯了C / C ++,我想知道是否可以定义类似 然后,在我的Java程序中的每个地方,我都可以将表单控制台读取为 但是我读过形式书籍Java不支持宏。 有人请向我解释为什么会这样,我可以用其他任何方式做到这一点。 问题答案: 您 可以, 但 不可以 。 该 不该 部分: 您 不应该这样做, 因为以这种方式使用预处理器