写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法:
1)读入密钥的key是一个字符串;
2)明文中字符c的密文为c^key[i];
3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密
4)解密时,用同一个key重新加密密文,就可以得到明文。
【输入形式】
从标准输入流中读入一个密钥串,使用其对当前目录下的文件1.txt进行加密。
【输出形式】
将文件密文输出到文件2.txt
【输入样例】
输入密钥为:
test
1.txt文件内容为
3321
5678
【输出样例】
输出密文到2.txt文件中。
GVAE
ASDL
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
String key = scanner.nextLine();
int index = 0;
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader("1.txt"));
bw = new BufferedWriter(new FileWriter("2.txt"));
String line;
while ((line = br.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
bw.write(line.charAt(i) ^ key.charAt(index));
index++;
index = index % key.length();
}
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
bw.close();
scanner.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}