Я пишу сериализуемую программу, сначала я создаю класс ' Test ', затем сериализирую объект класса Test в файле " java.ser ". Когда я читаю объект класса Test, когда вывод правильный. Когда я открываю файл " java.ser ", созданный сериализацией, Когда я изменял некоторое сгенерированное двоичное значение и снова считывал этот файл " java.ser " сериализуемого файла. Выход полностью изменился. Как ...?
Тестовый класс
package com.test.question;
import java.io.*;
class Test implements Serializable {
private String name;
public Test(String name) { this.name = name; }
public String getName() { return name;}
}
Класс WriteTest
package com.test.question;
import java.io.*;
public class WriteTest {
public static void main(String[] args) {
try (
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("java.ser"));
) {
Test test1 = new Test("OpenJdk-12");
oos.writeObject(test1);
} catch (IOException io) {
io.printStackTrace();
}
}
}
ReadTest Class
package com.test.question;
import java.io.*;
public class ReadTest {
public static void main(String[] args) {
try (
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("java.ser"))
) {
//Deserilization of test object
Test test2 = (Test)ois.readObject();
System.out.println("Name is : " + test2.getName());
} catch (IOException | ClassNotFoundException iocnfe ) {
iocnfe.printStackTrace();
}
}
}
Файл java.ser
aced 0005 7372 0016 636f 6d2e 7465 7374
2e71 7565 7374 696f 6e2e 5465 7374 6d96
c315 d09c f0eb 0200 014c 0004 6e61 6d65
7400 124c 6a61 7661 2f6c 616e 672f 5374
7269 6e67 3b78 7074 000a 4f70 656e 4a64
6b2d 3132
Первый запуск этой программы.
Выход:
D:\Linux\IDE\All-Workspace\OCA-Wrokspace\Ocaexam\src>java --module-path mods --module testingProgram/com.test.question.ReadTest
Name is : OpenJdk-12
И откройте сгенерированный Serialziable файл " java.ser ", когда я изменил последнее значение в файле java.ser 3132 = 3134 . И Запустить снова Эта программа, вывод полностью изменен.
Второй запуск этой программы.
D:\Linux\IDE\All-Workspace\OCA-Wrokspace\Ocaexam\src>java --module-path mods --module testingProgram/com.test.question.ReadTest
Name is : OpenJdk-14
Мой вопрос - Сериализуемый сгенерированный файл - Безопасный или нет ...?