使用Base64编码的类序列化/反序列化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Base64编码的类序列化/反序列化相关的知识,希望对你有一定的参考价值。

  1. using System;
  2. using System.IO;
  3. using System.Runtime.Serialization.Formatters.Binary;
  4.  
  5. namespace ConnectionClasses
  6. {
  7. [Serializable]
  8. public abstract class Connection
  9. {
  10. public int ID { get; set; }
  11.  
  12. public String Name { get; set; }
  13.  
  14. public string SerializeToBase64String()
  15. {
  16. return Connection.SerializeToBase64String(this);
  17. }
  18.  
  19. public static string SerializeToBase64String(Connection connection)
  20. {
  21. using (var ms = new MemoryStream())
  22. {
  23. new BinaryFormatter().Serialize(ms, connection);
  24. ms.Seek(0, SeekOrigin.Begin);
  25. return Convert.ToBase64String(ms.ToArray());
  26. }
  27. }
  28.  
  29. public static Connection DeserializeFromBase64String(String str)
  30. {
  31. using (var ms = new MemoryStream(Convert.FromBase64String(str)))
  32. {
  33. ms.Seek(0, SeekOrigin.Begin);
  34. return (Connection) new BinaryFormatter().Deserialize(ms);
  35. }
  36. }
  37. }
  38. }

以上是关于使用Base64编码的类序列化/反序列化的主要内容,如果未能解决你的问题,请参考以下文章

Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现

Java反序列化漏洞的挖掘攻击与防御

反序列化失败:base-64 字符数组的长度无效

typecho反序列化漏洞复现

17-java安全——shiro1.2.4反序列化分析(CVE-2016-4437)

17-java安全——shiro1.2.4反序列化分析(CVE-2016-4437)