【问题标题】:Serializing a String - possible? [closed]序列化字符串 - 可能吗? [关闭]
【发布时间】:2013-03-27 18:45:02
【问题描述】:

现在这是一个我搜索了很多地方的问题,做了很多编码,但仍然很困惑。我是 Java 新手,所以我正在编写这个程序,它将对象数据保存为序列化对象。数据成员是两个字符串。我读到,当一个对象被序列化并存储在一个文件中时,整个对象状态都会被保存。真的。然后数据也是二进制形式,人类或普通文本编辑器无法读取。因此,当我使用 writeObject 存储对象时,它成功保存了数据,但是当我打开文件时,它包含大量乱码数据,字符串分散在其中。如果我再仔细看一点,我可以清楚地辨认出琴弦。那么字符串 nit 是否会转换为其他类似数字的东西??

【问题讨论】:

  • 您是否使用 readObject 打开文件?还是在文本编辑器中?
  • 为什么可以看到序列化数据文件中的字符串很重要?
  • 您的问题与标题不同..按照您的问题标题..答案是肯定的,可以序列化字符串。如果您真的担心被序列化的字符串的安全性,并且保存在文件中,然后最好选择加密 ..
  • 您的问题标题具有误导性。

标签: java serialization


【解决方案1】:

那么字符串 nit 是否被转换成其他类似数字的东西?

我相信,字符串以长度前缀修改的 UTF-8 序列化。

虽然通常序列化的数据不容易被人类读取,但这不应被视为对想要阅读它的人的任何形式的保护。序列化格式有据可查,任何知道它是 Java 二进制序列化结果的人都可能能够从中获取重要数据。

如果您需要保证数据的安全,您还需要另一个方案以及作为序列化。 (我还鼓励您研究其他序列化选项。我不是 Java 序列化的忠实粉丝 - 它非常脆弱。在代码更改时使您的数据向后和向前兼容有点挑战。)

【讨论】:

    【解决方案2】:

    没有限制序列化的结果必须是不可读的。当您序列化一个字符串时,该字符串需要放在数据中,不妨把它和它的长度一起放在那里。

    序列化可能不是最紧凑的形式,因此您不应该对字符串在添加到字节流之前没有以某种方式压缩感到惊讶。

    【讨论】:

    • 感谢您的回复。我明白你和其他人在说什么。如果我写了一个包含字符串的序列化对象,那么仅仅依靠序列化会使字符串数据特别不可读是愚蠢的。
    猜你喜欢
    • 2022-10-23
    • 2021-12-27
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    相关资源
    最近更新 更多