序列化加密/反序列化解密
序列化/反序化
方便讀寫java中的任何物件(該物件需要實現
Serializable
)若沒有繼承
Serializable
,寫出時會丟擲異常,java.io.NotSerializableException 沒有實現序列化介面實現
Serializable
介面後,通常要指定版本號(不指定時自動生成)反序列化的對像與當前版本一致 那麼反序列化必定成功,哪怕類結構發生改變,凡是可用屬性還是會還原
版本號不同時反序列化必定失敗
transient
關鍵字修飾的變數和靜態變數不會寫出繼承父類成員變數時,父類需要實現
Serializable
接口才能還原資料- 引用變數必須實現
Serializable
利用反射完成加密和解密
try {
String str="111";
Class kgc =KeyGenerator.class;
Method kgcm=kgc.getMethod("getInstance", String.class);
Object kg=kgcm.invoke(kgc, "Desede");
Method m= kgc.getMethod("generateKey"); //獲取生成祕鑰方法
Object key=m.invoke(kg); //獲取祕鑰
System.out.println("金鑰獲取成功" );
Class cc=Cipher.class;
m=cc.getMethod("getInstance",String.class);
Object c=m.invoke(cc,"Desede"); //鎖例項
System.out.println("鎖獲取成功");
m=cc.getMethod("init",int.class,Key.class);
m.invoke(c,cc.getField("ENCRYPT_MODE").get(cc),key); //初始化鎖
System.out.println("鎖初始化成功");
Class soc=SealedObject.class;
Object so=soc.getConstructor(Serializable.class,cc).newInstance(str,c); //獲取上的盒子
System.out.println("獲取盒子成功");
Class oosc=ObjectOutputStream.class;
Class fosc=FileOutputStream.class;
Object fos=fosc.getConstructor(String.class).newInstance("str.data"); //獲取位元組流
Object oos=oosc.getDeclaredConstructor(OutputStream.class).newInstance(fos);
oosc.getMethod("writeObject", Object.class).invoke(oos, so);
System.out.println("成功寫出");
Class oisc=ObjectInputStream.class;
Class fisc=FileInputStream.class;
Object fis=fisc.getConstructor(String.class).newInstance("str.data");
Object ois=oisc.getConstructor(InputStream.class).newInstance(fis);
Object sor=oisc.getMethod("readObject").invoke(ois);
System.out.println("成功獲取盒子");
Object ostr=soc.getMethod("getObject",Key.class).invoke(sor, key);
System.out.println(ostr);
} catch (Exception e) {
e.printStackTrace();
}
相關推薦
序列化加密/反序列化解密
序列化/反序化 方便讀寫java中的任何物件(該物件需要實現Serializable) 若沒有繼承Serializable,寫出時會丟擲異常,java.io.NotSerializableExcep
Python學習心得(五) random生成驗證碼、MD5加密、pickle與json的序列化和反序列化
用法 div com ict file imp randint csdn == # -*- coding:utf-8 -*- import random as rd #驗證碼 import hashlib as hsl #MD5加密 import pickle,json
Java核心類庫-IO-對象流(實現序列化與反序列化)
.get throws 反序 code row cts new java cep 使用對象流來完成序列化和反序列化操作: ObjectOutputStream:通過writeObject()方法做序列化操作的 ObjectInputStream:通過readObje
C#對象先序列化然後反序列化時間丟失八小時的問題 ToLocalTime
key oid sta json oaf get pub 時間 反序列化 class Program { static void Main(string[] args) { UserInfo userInfo = ne
Java IO-5 序列化與反序列化流
str ride log getname file urn turn objects transient 建一個Person類 1 package demo05; 2 3 import java.io.Serializable; 4 5 public cla
C# Json序列化和反序列化
ava script brush arp turn bject new c# 序列化 using System.Web.Script.Serialization; public class JsonHelper { public static string Ob
契約類相關的序列化與反序列化
pub ima cti 相關 ria 數據 num spa set 契約類指繼承了:DataContract的類。契約類常在WCF,webService等各種服務中作為傳輸數據使用。 凡是契約類或者繼承了契約類的類,如果想要屬性參與序列化與反序列化,需要在屬性上加上標記:D
jackson實現序列化的反序列化解析
效率 出現 span jsonp cor 作用 pat 阿裏 控制 現在項目開發過程中,字符串的傳遞成為前後端交互的主要方式,主要是因為字符串不會出現亂碼等問題,傳送方式是字節碼傳遞,效率比實體較安全。 常見的Json類庫有Gson、JSON
序列化和反序列化
之前 字符 htm ive XML 文章 傳輸 c# clas 序列化 (Serialization)將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。 對象本身是在內存中存在的,想要儲存或者傳輸,就要把對象變成xml或者json或者二進制碼或者字符串等文件。然後就可以下次
java中什麽是序列化和反序列化
zab question .com 程序 還原 破壞 ans 但我 實現 序列化:能夠把一個對象用二進制的表示出來。 類似我第一個字節表示什麽屬性名詞,第二個字節表示什麽屬性值,第幾個字段表示有幾個屬性等。 而且這個二進制可以寫到硬
Java序列化與反序列化
setname [] 進制 方式 gets 創建 保存 ati 取數據 Java序列化與反序列化是什麽?為什麽需要序列化與反序列化?如何實現Java序列化與反序列化?本文圍繞這些問題進行了探討。 1.Java序列化與反序列化 Java序列化是指把Java對象轉換為字節序
json對象的序列化和反序列化
name .cn .net序列化 object cnblogs json log con com //Json.NET序列化 string jsonData = JsonConvert.SerializeObject(對象model);
python學習day4之路文件的序列化和反序列化
data 多次 文件交互 由於 mps logs json tro 之路 json和pickle序列化和反序列化 json是用來實現不同程序之間的文件交互,由於不同程序之間需要進行文件信息交互,由於用python寫的代碼可能要與其他語言寫的代碼進行數據傳輸,json支持
基於Json序列化和反序列化通用的封裝
result .html stream ctr 相似性 tac ram 等等 newton 1. 最近項目已經上線了 ,閑暇了幾天 想將JSON的序列化以及反序列化進行重新的封裝一下本人定義為JSONHelp,雖然Microsoft 已經做的很好了。但是我想封裝一套為自己開
ASP.NET 中JSON 的序列化和反序列化
urn 序列 del nbsp parseint 代碼 href end user JSON是專門為瀏覽器中的網頁上運行的JavaScript代碼而設計的一種數據格式。在網站應用中使用JSON的場景越來越多,本文介紹ASP.NET中JSON的序列化和反序列化,主要對JSON
asp.net mvc中如何處理字符串與對象之間的序列化與反序列化(一)
osi strong 類結構 plain pbo edate inf esc arp 前臺我們一般用ajax來發送數據到後端進行處理,如果json數據結構和後臺的實體類結構一致,就直接可以反序列化為指定的對象進行操作,非常方便。 前端發送的json數據結構: 後端實體結
C#對象序列化與反序列化
space ros 個人信息 瀏覽器 特性 點名 文件名 屬性節點 派生 1.對象序列化的介紹 (1).NET支持對象序列化的幾種方式 二進制序列化:對象序列化之後是二進制形式的,通過BinaryFormatter類來實現的,這個類位於System.Runtime.Seri
python基礎之繼承組合應用、對象序列化和反序列化,選課系統綜合示例
sel 初始 否則 通用 __init__ period 類型 反序列化 信息 繼承+組合應用示例 1 class Date: #定義時間類,包含姓名、年、月、日,用於返回生日 2 def __init__(self,name,year,mon,day):
對象序列化和反序列化的基本操作
bsp 序列 log png .cn ima images mage alt 對象序列化和反序列化的基本操作
json/pickle- 序列化和反序列化
內部 int strong 回來 color lex 數據類型 硬盤 json json只能處理簡單的數據類型。列表,字典,字符串等。函數不行。用於不同語言之間的相互轉化。 編碼:把一個Python對象編碼轉換成Json字符串 json.dumps() 把內存的數據對象