JAVA序列化与反序列化-阿里云开发者社区

开发者社区> @北鲲> 正文

JAVA序列化与反序列化

简介: Java 序列化是指把 Java 对象转换为字节序列的过程; Java 反序列化是指把字节序列恢复为 Java 对象的过程;
+关注继续查看


0x01 简述

Java 序列化是指把 Java 对象转换为字节序列的过程;
????? Java 反序列化是指把字节序列恢复为 Java 对象的过程;


0x02 实验部分

?看完上面的简述,可能很多人似懂非懂。

?比如你现在写一个项目,该项目有一个登录功能。该功能每次登录都需要从指定文件txt中读取账号密码进行登录。那么该文件内账号密码为明文的状态,肯定是不安全的。所以这个时候就用到了序列化与反序列化。当把账号密码序列化之后,里面的账号密码就会变成字节形式。当有人打开也会看不懂。只有进行反序列化才能恢复原样。

类代码:




















public class USER implements Serializable {    public String user;    public int pass;    public USER(){
    }    public USER(String user,int pass){        this.user = user;        this.pass = pass;    }    public void set(String user,int pass){        this.user = user;        this.pass = pass;    }    public void get(){        System.out.println("user: " +this.user+" pass: "+this.pass);    }}

序列化代码:






USER us = new USER();  us.set("zhangsan",666666);  ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream("D:\\p.txt"));  obj.writeObject(us);  obj.close();

可以看到这就是序列化的内容

图片.png


反序列化操作





ObjectInputStream obj = new ObjectInputStream(new FileInputStream("D:\\p.txt"));        USER u = (USER)obj.readObject();        u.get();        obj.close();

??????? 可以看到反序列化之后,成功将数据进行恢复

图片.png



0x03 结尾

本文主要讲解了ObjectOutputStream和ObjectInputStream两种类


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java反序列化漏洞利用的学习与实践
本文讲的是Java反序列化漏洞利用的学习与实践,建议你在阅读本文之前,先阅读《攻击Java反序列化过程》,这样你就会对java反序列化有一个比较清晰的认识。除此之外,这篇文章还提到了一个“DeserLab”的演示应用。
8276 0
Serializable详解(1):代码验证Java序列化与反序列化
Serializable详解之代码验证Java序列化与反序列化
921 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的,?mysql的 3306,?mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建. ? have?fun! ?将编程看作是一门艺术,而不单单是个技术。
4480 0
JAVA之序列化A
package SwingGui.sky.com; import java.io.*; public class GameSaverTest { public static void main(String[] args) { GameCharacter on...
641 0
Java对象序列化
  当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
587 0
Protostuff 的Java序列化和反序列化
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80589509 io.
977 0
+关注
@北鲲
主要玩耍对服务器的渗透测试技术
30
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载
http://www.vxiaotou.com