java简单加密解密文件(凯撒)(自己看的)
判断是否为数字或字母,按规则加密
没有设置key :
private static void encode(char[] fileContent) {
for (int i = 0; i < fileContent.length; i++) {
char c = fileContent[i];
if (isLetterOrDigit(c)) {
switch (c) {
case '9':
c = 0;
break;
case 'z':
c = 'a';
break;
case 'Z':
c = 'A';
break;
default:
c++;
break;
}
}
fileContent[i] = c;
}
}
判断是否为数字或字母:
public static boolean isLetterOrDigit(char c) {
String letterOrDigital = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return -1 == letterOrDigital.indexOf(c) ? false : true;
}
字符流读取文件内容,加密后再写入文件:
public static void encodeFile(File encodingFile, File encodedFile) {
try (FileReader fr = new FileReader(encodingFile); FileWriter fw = new FileWriter(encodedFile)) {
char[] fileContent = new char[(int) encodingFile.length()];
fr.read(fileContent);
System.out.println("前: " + new String(fileContent));
encode(fileContent);
System.out.println("后: " + new String(fileContent));
fw.write(fileContent);
} catch (IOException e) {
e.printStackTrace();
}
}