对于重要文件通常需要进行加密处理,请编写程序实现对文本文件的加密,密码表如下,明文如果是大写字母则密文也为密码表对应大写字母,明文如果是小写字母则密文也为密码表对应小写字母。
明文 | A | B | C | D | E | F | G | H | I | J | K | L | M |
密文 | T | O | I | A | N | D | E | G | H | Z | B | K | F |
明文 | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
密文 | J | M | C | L | P | Y | V | X | Q | R | W | U | S |
上次的错误在于转换后没有退出,每次密文进行转换后要退出,不然字母将转换好几次。
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) throws Exception {
// 创建两个数组 分别填入字母以及加密后的密文
char reality[] = { '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' };
char fake[] = { 'T', 'O', 'I', 'A', 'N', 'D', 'E', 'G', 'H', 'Z', 'B', 'K', 'F', 'J', 'M', 'C', 'L', 'P', 'Y',
'V', 'X', 'Q', 'R', 'W', 'U', 'S' };
FileWriter fw = new FileWriter(new File("C:\\Dell\\Test5.txt"));
FileReader fr = new FileReader(new File("C:\\Dell\\Test5.txt"));
Scanner in = new Scanner(System.in);
String str = in.nextLine();
char[] a = str.toCharArray();// toCharArray() 方法将字符串转换为字符数组。
for (int n = 0; n < a.length; n++) {
for (int i = 0; i < 26; i++) {
if (a[n] == reality[i]) {// 一个一个的进行字母的加密
a[n] = fake[i];
break;
} else if (a[n] <= 'z' && a[n] >= 'a') {
// 如果输入是小写的先转化成大写 然后对应大写的字母
if (reality[i] == (char) (a[n] - 32)) { // a[n] - 32后成对应的ASCII码 因此要强制类型转换
a[n] = (char) (fake[i] + 32);//将大写的密文转换成小写
break;
}
}
}
}
fw.write(a);
in.close();
fw.close();
fr.close();
}
}