`
csd_ali
  • 浏览: 134028 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

序列化的秘密

阅读更多

序列化的秘密,详细内容请看附件

 

内容简介:

为什么要有序列化:

       一样事物的产生,必然有他的道理

序列化都干些啥:

       产生了就得干活

首要问题:反序列化时如何生成实例

       序列化时将实例变为了字节序列,反序列化时就得把实例再给你变回来

是不是所有的类都需要序列化:

       不是所有类都需要实例化,原因是什么

哪些东西需要序列化:

       类里面有那么多东西,序列化需要关照到哪些内容?

transient保护敏感信息  

       如果类里有的字段是敏感信息,不想被序列化,该怎么办?

序列化算法:

       探究序列化的原理

定制自己的序列化算法:

       自己也可以定制序列化,step bystep告诉你怎么做

严重漏洞:刻舟求剑:

       从字节序列中读取老版本的对象,去恢复新版本的,好比刻舟求剑

单例模式不过是浮云:

       序列化可以肆意生成实例,单例模式很难保证,我们该如何做?

同引用实例化问题:

       如果两个属性引用了同一个实例,反序列化时是生成一个实例,还是两个?

常见的序列化攻击:

       序列化的过程“漏洞重重”,自然攻击也就来了,有哪些攻击,我们该如何做

百家争鸣:hessianmina也玩序列化:

       hessianmina都实现了自己的序列化,各有千秋百家争鸣,我们来探讨一下

工作中需要注意的点:

       如何用好序列化

附录1 ObjectOutputStreamObjectInputStream

       序列化不可获取的两个类,放在哪章都不好,只能放在这里做个参考

附录2 Serializable中的隐藏方法一览:

       Serializable里有很多不为人知的秘密

参考文献:

       想扩展阅读请看这里,很多高手的文章都在这里,感谢他们的帮助

        

       很多内容都是自己瞎琢磨的,有问题请大家批评指正thanks

 

 

3
6
分享到:
评论
2 楼 gkbusy 2011-03-20  
总结的好~~

补充一点:

序列化中有一个法则是:静态属性不纳入序列化的内容之中。
不过这个法则有一个例外的场景——就是针对serialVersionUID。

serialVersionUID这个静态属性会被序列化写入到传输的二进制内容中,在反序列化的时候,客户端会用本地中java类中的serialVersionUID与从网络(或者其他方式)中传送过来的二进制实例信息中的serailVersionUID的值进行比较,从而了解这两份序列化的内容是否为同一个类产生的。
1 楼 lixjluck 2011-03-18  
总结的很好,学习了。

相关推荐

    Java对象序列化的秘密

    Java对象序列化的秘密

    Java 序列化的秘密(高清PDF中文版)

    为什么要有序列化 任何事物的产生都是有其原因的,序列化也不例外。要说到序列化的起源,还得从最基本的 java 程序说起(本文介绍的是 java 序列化)。啥是 java 程序,简单来说就是一个进程一块内存,进程根据 类生成...

    sss:实现 Shamir 的秘密共享算法的 Java 库

    该库包含用于将共享序列化和反序列化为二进制消息的实用函数,以实现紧凑且易于存储和共享。 工件在 Maven 中央存储库中的以下坐标可用: <groupId>rs.in.zivanovic <artifactId>sss <version>1.0.0 ...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    序列化和反序列化 继承、封装、多态的实现原理 容器 Java集合类总结 Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制...

    (4,4)的量子秘密共享协议及其模型化检测

    协议中由发起者制备五粒子GHZ态的量子序列, 秘密共享方总人数为4, 只有当4个人都参与解密时才能解出秘密信息。分析了协议的正确性和安全性, 结果表明协议能抵抗截获重发攻击、中间人攻击和纠缠攻击。当诱惑粒子存在...

    Java工程师面试复习指南

    序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解:Queue和LinkedList Java集合详解:迭代器,快速失败机制与比较器...

    时间序列数据库的秘密(二)——索引

    Elasticsearch是通过Lucene的倒排索引技术实现比...要进一步深入的化,还是要看一下Lucene的倒排索引是怎么构成的。这里有好几个概念。我们来看一个实际的例子,假设有如下的数据:这里每一行是一个document。每个doc

    详解JSON.stringify()的5个秘密特性

    JSON.stringify() 方法能将一个 JavaScript 对象或值转换成一个...//初始化一个 user 对象 const user = { name : Prateek Singh, age : 26 } console.log(user); // 结果 // [object Object] 哦!console.log

    marshmallow-polyfield:棉花糖的扩展名,允许多态字段

    棉花糖是一个出色的库,用于数据的序列化和反序列化。 有关该项目的更多信息,请参见其页面或其。 该项目添加了一个专为多态类型设计的自定义字段。 这使您可以定义一个模式,说明“此字段接受X类型的任何内容” ...

    论文研究-基于直方图移位的AMBTC域无损信息隐藏.pdf

    该算法将直方图移位技术应用于信息嵌入过程,在绝对矩阵块截断编码(AMBTC)生成的高低平均值序列上隐藏预处理后的秘密信息,实现了载体的无损隐藏并提升了嵌入容量,且嵌入容量高于直接在由AMBTC生成的高低平均值...

    websock:在明文HTTP顶部编码的秘密,加密和压缩的套接字流。 纯文本流量包含ECDH协商密钥以及RC4密码流

    网络袜 基于套接字的秘密数据传输协议,该协议通过HTTP使用... 在线上共享的公共密钥被序列化,与一个随机密钥进行异或,并进行base64编码。 公钥交换是使用HTTP POST参数完成的,该参数也是随机的。 一旦使用ECDH密钥

    twofactor:Golang两因素认证库

    预加载序列化和反序列化以将一次性令牌结构存储在持久层中 与客户端设备自动重新同步 内置生成的PNG QR码,可轻松在用户设备上添加密钥 支持6、7、8位数字令牌 支持HMAC-SHA1,HMAC-SHA256,HMAC-SHA512 储存金钥 ...

    基于对称密钥算法的智能电网安全技术研究

    随着智能电网的信息化和工业化的逐步融合,为了保证了传送数据的完整性以及通信系统的安全性,采用动态秘密的对称密钥算法,对智能电网安全进行设计,设计了有效序列模块、对称密钥模块、数据加解密模块、消息摘要设计...

    计算机算法

    本文提出了一种以Visual C+ + 为开发平台, 基于可视化仿真软件Creator和Vega快速设计开发红外图像序列动态生成系统的方法, 重点讨论了在Vega环境下开发红外图像生成软件的设计流程, TMM 工具和MAT 工具的应用, 以及...

    url_store:数据安全地存储在 url 中

    网址保存输出通过 GZip 的短代码通过:marshal :yaml 序列化通过 DSS 散列 DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1 SHA224 SHA256 SHA384 SHA512 非常适合: 密码重置链接电子邮件退订链接点击跟踪访问控制......

    node-cookie-derail:解码并可选择验证未加密的 Ruby on Rails cookie 的签名

    对此的替代实现要求您将 Rails 应用程序端的默认序列化格式更改为类似 JSON 的格式 - 这不是,而是使用用 javascript 编写的基本(哈希/数组/字符串/数字) 。用法 var derail = require ( 'cookie-derail' ) ;var ...

    buttercup-core:强大的NodeJS密码库

    保管库管理器提供了易于使用的方法,可以将保管库脱水和补水(以序列化形式存储)到某些安全存储(文件,远程数据源等)。 Buttercup可以保存和加载存储在本地,Dropbox或Google Drive等云服务提供商中的保管库,...

    adri326:不太秘密的秘密自定义配置文件页面

    ,使用几何工具可视化序列。 ⟨JS⟩ ,模拟星系。 ⟨锈⟩ ,微小的项目。 ⟨CSS,JS⟩学校 :two-thirty: 我为学校要做的项目。 ,使用两个激光束+传感器和arduino的人员计数器。 ⟨C++⟩ ,使用布尔逻辑作为一等...

    rails-api-base:Rails 5 RESTful API模板

    Json序列化 这是其对应的客户端移动应用程序,它使用此api中的数据-> 快速开始 安装ruby版本2.3.0并使用ruby环境管理器进行设置()。 安装Postgres并在前台启动PostgreSQL服务器()。 克隆存储库并进入其中: ...

Global site tag (gtag.js) - Google Analytics