我有一个存储密码的类(我将添加更多的东西,而不仅仅是密码),名为 Data:
import java.io.Serializable;
public class Data implements Serializable{
public String password = "";
}
作为测试,我运行了这两个:
private static File datafile = new File("data.src");
public static void checkDatafile() {
try {
Data data = new Data();
data.password = "Newwww";
if (!datafile.exists()) {
datafile.createNewFile();
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(datafile));
oos.writeObject(data);
oos.flush();
oos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static Data loadData(Data data) {
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(datafile));
data = (Data) ois.readObject();
ois.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return data;
}
它可以完美地写入和读取,但是当我在记事本中打开 data.src 时,人类有点可读并且密码不安全,这是 data.src 的输出:
ャ・ sr data.Data克ラ淕6J・ L passwordt Ljava/lang/String;xpt Newwww
密码很容易看到并且不安全,有没有办法在写入文件时加密/编码对象以使其不被人类读取?
此外,我宁愿坚持使用标准 Java 库,然后下载和使用其他库。