JAVA序列化与反序列化

  • A+
所属分类:安全开发

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();

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

JAVA序列化与反序列化


反序列化操作

        ObjectInputStream obj = new ObjectInputStream(new FileInputStream("D:\p.txt"));        USER u = (USER)obj.readObject();        u.get();        obj.close();
        可以看到反序列化之后,成功将数据进行恢复

JAVA序列化与反序列化



0x03 结尾

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

11111
微信搜索关注 "安全族" 长期致力于安全研究


下方扫一下扫,即可关注JAVA序列化与反序列化

JAVA序列化与反序列化






原文始发于微信公众号(安全族):JAVA序列化与反序列化

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: