错误的密码caesar java程序

错误的密码caesar java程序,java,encryption,caesar-cipher,Java,Encryption,Caesar Cipher,我用java为caesar cipher编写了一个程序,该程序将文本文件作为输入存储在我的计算机中,并根据用户提供的密钥值对其进行加密。然后这个加密文件必须以文本文件格式保存回计算机。我一直在试图找出哪里出了问题,但我想我需要一些在java方面更有经验的人的帮助。这是我的密码: import java.util.Scanner; import java.io.*; import java.lang.*; public class trial { public static void m

我用java为caesar cipher编写了一个程序,该程序将文本文件作为输入存储在我的计算机中,并根据用户提供的密钥值对其进行加密。然后这个加密文件必须以文本文件格式保存回计算机。我一直在试图找出哪里出了问题,但我想我需要一些在java方面更有经验的人的帮助。这是我的密码:

import java.util.Scanner;
import java.io.*;
import java.lang.*;

public class trial
{
    public static void main(String arg[])
    {
        String textFile="plaintext.txt";
        String cipheredFile=" ciphertext.txt";
        String line= null;
        FileReader fileReader=new FileReader(textFile);
        BufferedReader bufferedReader=new BufferedReader(fileReader);

        FileWriter fileWriter= new FileWriter(cipheredFile,true);
        BufferedWriter bufferedWriter= new BufferedWriter(fileWriter);


        int swvalue;
        Scanner input= new Scanner(System.in);
        System.out.println("Select 1: Encrypt, 2: Decrypt, 3: Get Frequency");
        int msg= input.nextInt();
        swvalue= Integer.valueOf(msg);

        switch(swvalue)


        {
        case 1:
            System.out.println("Encrypting the file");
            System.out.println(" Please enter a value for key");
            int keyvalue= input.nextInt();

            String[]  filearray=null;
            while(( line=bufferedReader.readLine())!=null)
            { 

            char[] toEncrypt=line.toCharArray();

                for(int i=0;i<toEncrypt.length;i++)
                {

                int charPosition= indexOf(line.charAt(i));
                int finalValue=(keyValue+charPosition)%26;
                char replaceValue=line.charAt(finalValue);
                line+=replaceValue;



                }


             bufferedWriter.write(line);
             bufferedWriter.newLine();

            }
            bufferedReader.close();
            bufferedWriter.close();

            break;


        case 2:


            System.out.println("Decrypt the file");
            break;



        case 3:

            System.out.println(" Get frequency");
            break;

        }
    }
}
import java.util.Scanner;
导入java.io.*;
导入java.lang.*;
公开庭审
{
公共静态void main(字符串arg[])
{
String textFile=“plaintext.txt”;
字符串cipherdfile=“ciphertext.txt”;
字符串行=null;
FileReader FileReader=新的FileReader(textFile);
BufferedReader BufferedReader=新的BufferedReader(文件阅读器);
FileWriter FileWriter=新的FileWriter(加密文件,true);
BufferedWriter BufferedWriter=新的BufferedWriter(fileWriter);
int-swvalue;
扫描仪输入=新扫描仪(System.in);
System.out.println(“选择1:Encrypt,2:Decrypt,3:Get Frequency”);
int msg=input.nextInt();
swvalue=整数。valueOf(msg);
开关(SWV值)
{
案例1:
System.out.println(“加密文件”);
System.out.println(“请为键输入一个值”);
int keyvalue=input.nextInt();
字符串[]filearray=null;
而((line=bufferedReader.readLine())!=null)
{ 
char[]toEncrypt=line.toCharArray();

对于(int i=0;i这是旋转的位置:

但这不是旋转

不应移动字符串中的位置,而应移动值:

int value = line.charAt(i);
int finalValue=(keyValue+value)%26;

这是旋转的位置:

但这不是旋转

不应移动字符串中的位置,而应移动值:

int value = line.charAt(i);
int finalValue=(keyValue+value)%26;

什么让你认为它不起作用?我会先对代码进行排序。删除不必要的行、未使用的或重复的变量等。这应该会澄清很多。这种实现不是凯撒密码,只是伪随机交换字符。什么让你认为它不起作用?我会从对代码进行排序开始。删除unnece多行、未使用的或重复的变量等等。这应该会澄清很多。而且,这种实现不是凯撒密码,而是伪随机交换字符