我过去三天一直在尝试对此进行加密,结果就是所有符号。我不知道我的程序在哪里出错了,我必须在一天之内将其作为我的作业提交。在这方面迫切需要帮助。我的程序将输入作为文本文件,使用密钥对其进行加密,并将输出返回到另一个文本文件中。
import java.util.Scanner;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.FileWriter;*/
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;
String letters="";
String output="";
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();
try{
FileReader fileReader=new FileReader(textFile);
BufferedReader bufferedReader=new BufferedReader(fileReader);
FileWriter fileWriter= new FileWriter(cipheredFile);
BufferedWriter bufferedWriter= new BufferedWriter(fileWriter);
while(( line=bufferedReader.readLine())!=null)
{
char[] toEncrypt=line.toCharArray();
for(int i=0;i<toEncrypt.length;i++)
{
char alphabet=toEncrypt[i];
alphabet=(char) ((alphabet+keyvalue)%26);
letters= String.valueOf(alphabet);
output+=letters;
}
bufferedWriter.write(output);
bufferedWriter.newLine();
}
bufferedReader.close();
//bufferedWriter.close();
break;
} catch (IOException e)
{ e.printStackTrace();}
case 2:
System.out.println("Decrypt the file");
break;
default:
System.out.println(" Get frequency");
break;
}
}
}
答案 0 :(得分:1)
替换此行:
alphabet=(char) ((alphabet+keyvalue)%26);
有了这个:
alphabet=(char) ((alphabet+keyvalue)%26 + 'a');
您实际上是在使用ASCII字符表最底部的字符。添加a
字符的值时,您将从字母表的开头重新开始。