2013-03-27 5 views
-2

Теперь это вопрос, для которого я искал много мест, много кодировал, но все же очень смущен. Я новичок в Java, поэтому я написал эту программу, которая сохраняет данные объекта как сериализованный объект. Элементами данных являются две строки. Я прочитал, что когда объект сериализуется и сохраняется в файле, сохраняется состояние всего объекта. Правда. Затем данные также находятся в двоичной форме, которые не могут быть прочитаны людьми или обычными текстовыми редакторами. Поэтому, когда я сохранил объект с помощью writeObject, он успешно сохранил данные, но когда я открываю файл, он содержит много данных тарабарщины, причем строки разбросаны внутри. Если я посмотрю немного более внимательно, я смогу четко разобрать строки. Так что строки нит превращаются во что-то другое, как в случае цифр?Сериализация струны - возможно?

+0

Вы открываете файл с помощью readObject? или в текстовом редакторе? –

+0

Почему имеет значение, что вы можете видеть строки в сериализованном файле данных? –

+2

Вы задаёте вопрос, отличный от заголовка. Идти по вашему вопросу. Ответ: Да, можно сериализовать строку. И если вы действительно обеспокоены безопасностью вашей строки, которая сериализуется и сохраняется в файле, тогда лучше выбрать для шифрования .. –

ответ

1

Так что строки нит превращаются во что-то другое, как в случае цифр?

Строки сериализованы по длине с префиксом модифицированного UTF-8, я считаю.

Хотя обычные сериализованные данные нелегко читаются людьми, это не следует рассматривать как какую-либо защиту от людей, которые хотят его прочитать. Формат сериализации хорошо документирован, и любой, кто знает, что это результат двоичной сериализации Java, скорее всего, сможет извлечь из него важные данные.

Если вам нужно сохранить данные в безопасности, вам нужна другая схема , а также в качестве сериализации. (Я бы также рекомендовал вам изучить другие варианты сериализации. Я не большой поклонник сериализации Java - он очень хрупкий. Сделать ваши данные обратно и вперед совместимыми с учетом изменений кода немного сложнее.)

0

Нет ограничений, что результат сериализации должен быть нечитаемым. Когда вы сериализуете строку, строка должна быть помещена в данные, возможно, просто поместите ее прямо там, вместе с ее длиной.

Сериализация не является самой компактной формой, поэтому не следует удивляться тому, что строка не была сжата каким-то образом перед добавлением в поток байтов.

+0

Благодарим вас за ответ. Я получаю то, что вы и другие говорите. Если я пишу сериализованный объект, содержащий строки, то полагаться только на сериализацию, что он будет делать строковые данные, которые будут нечитабельны, будет глупостью. –

Смежные вопросы