1. 程式人生 > >序列化加密/反序列化解密

序列化加密/反序列化解密

序列化/反序化

  • 方便讀寫java中的任何物件(該物件需要實現Serializable

  • 若沒有繼承Serializable,寫出時會丟擲異常,java.io.NotSerializableException 沒有實現序列化介面

  • 實現Serializable介面後,通常要指定版本號(不指定時自動生成)

  • 反序列化的對像與當前版本一致 那麼反序列化必定成功,哪怕類結構發生改變,凡是可用屬性還是會還原

  • 版本號不同時反序列化必定失敗

  • transient關鍵字修飾的變數和靜態變數不會寫出

  • 繼承父類成員變數時,父類需要實現Serializable接口才能還原資料

  • 引用變數必須實現Serializable
    介面否則會丟擲異常,null時除外

利用反射完成加密和解密

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() 把內存的數據對象