使用 BinaryFormatter 反序列化加密数据时出现问题

2023-12-07

这是我的代码:

    public static void Save<T>(T toSerialize, string fileSpec) {
        BinaryFormatter formatter = new BinaryFormatter();
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();

        using (FileStream stream = File.Create(fileSpec)) {
            using (CryptoStream cryptoStream = new CryptoStream(stream, des.CreateEncryptor(key, iv), CryptoStreamMode.Write)) {
                formatter.Serialize(cryptoStream, toSerialize);
                cryptoStream.FlushFinalBlock();
            }
        }
    }

    public static T Load<T>(string fileSpec) {
        BinaryFormatter formatter = new BinaryFormatter();
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();

        using (FileStream stream = File.OpenRead(fileSpec)) {
            using (CryptoStream cryptoStream = new CryptoStream(stream, des.CreateEncryptor(key, iv), CryptoStreamMode.Read)) {
                return (T)formatter.Deserialize(cryptoStream);
            }
        }
    }

Key 和 iv 都是长度为 8 的静态字节数组,我将其用于测试目的。出现错误如下:

二进制流“178”不包含有效的 BinaryHeader。可能的原因是序列化和反序列化之间无效的流或对象版本更改

任何帮助深表感谢!


一个小错字:你的Load方法应该使用des.CreateDecryptor, 像这样:

public static T Load<T>(string fileSpec)
{
    BinaryFormatter formatter = new BinaryFormatter();
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();

    using (FileStream stream = File.OpenRead(fileSpec))
    {
        using (CryptoStream cryptoStream = 
               new CryptoStream(stream, des.CreateDecryptor(key, iv),
                                CryptoStreamMode.Read))
        {
            return (T)formatter.Deserialize(cryptoStream);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 BinaryFormatter 反序列化加密数据时出现问题 的相关文章

随机推荐

  • POST 请求上的 GAE Soft 私有内存限制错误

    我正在开发一个使用 Google 应用程序引擎付费服务的应用程序 在应用程序中 我正在解析一个大型 xml 文件并尝试将数据提取到数据存储区 但是在执行此任务时 GAE 向我抛出如下错误 我还尝试通过将前端实例类从 F1 增加到 F2 来更
  • 使用 VBA 从 Excel 2010 查找并替换 Powerpoint 2010 中的文本

    我成功地在 powerpoint odule 中使用了这段代码 但是当我将其移动到我的 excel 模块中时 它给我带来了几个问题 我在 Excel 的第 1 页上嵌入了 Powerpoint 应用程序 目标是从 Excel 生成 Powe
  • 如何在 Node.js / EJS 中单击按钮时触发 Firebase POST 请求

    EDIT 实际上仍然存在一些问题 真正的问题实际上是 Firebase 安全规则 一切都在这里解决了 如何将 Node js 变量放入我的 中 问题 单击 Downvote Button 的 Upvote Button 时如何触发Fireb
  • Laravel (HasMany) 不检索值

    我有以下型号 namespace App use Illuminate Database Eloquent Model class forum category extends Model protected table forum cat
  • 通过Delphi传递SQL Server存储过程参数名称

    我是 Delphi 的新手 正在尝试找到调用 SQL Server 中的一些存储过程的方法 这是我目前正在使用的代码 它有效 FConnection TADOConnection Create nil FMetaDataSP TADOSto
  • 加密脚本中的 MySQL 流量

    我需要能够加密从 Web 服务器到数据库服务器的 MySQL 流量 我知道如何根据 my cnf 中的服务器和客户端设置将 MySQL 设置为使用 SSL 但是 这需要使用 PHP 中的 mysql connect 来完成 这可能是一个由两
  • python 字节数组中的“&”代表什么

    符号是什么意思 意思是在Python的末尾bytearray e g x w bytearray b x00 x00 x04 x12 xaa x12 x12 当将其转换为整数时 int from bytes x w little Out 1
  • 如何增加长时间运行的查询的执行超时?

    在我的应用程序中 执行一个查询需要 3 分钟 我找到默认 ExecutionTimeout 值为 110 秒 我尝试将其更改为 500 秒 但它没有解决我的问题 我在某个地方找到了这个设置
  • 如何从 PHAsset 获取原始图像和媒体类型?

    My GMImagePickerController 返回从照片应用程序中选择的图像的列表 代码如下 void assetsPickerController GMImagePickerController picker didFinishP
  • Pyspark:在 UDF 中传递多列

    我正在编写一个用户定义函数 它将获取数据框中除第一列之外的所有列并进行求和 或任何其他操作 现在 数据框有时可以有 3 列 4 列或更多 它会有所不同 我知道我可以硬编码 4 个列名称作为 UDF 中的传递 但在这种情况下它会有所不同 所以
  • Rails 3.0.3 - Oracle_enhanced 不起作用

    我一直在使用 Ruby 1 8 Rails 2 3 5 和 oracle enhanced 效果很好 现在我最近在另一个文件夹中安装了 Ruby 1 9 2 和 Rails 3 0 3 但无法让它工作 当我创建一个简单的应用程序并访问它时
  • WPF DataGrid 单列中的不同编辑控件

    我正在开发一个 WPF 4 0 应用程序 我需要创建一个网格 其中包含一个带有文本框或下拉列表的列 具体取决于行 例子 Name Value Help PROP1A textbox Description of prop1a Prop2A
  • Android Studio 0.2.6 和 ZBar 项目设置

    我使用的是最新的Android Studio 0 2 6和最新的ZBar Android SDK 到目前为止我所做的 创建了一个名为 QRTest 的全新项目 在我的项目中创建了一个名为 libs 的文件夹 将Zbar libs目录的内容放
  • 如何在不看到权限屏幕的情况下登录 OneDrive(首次登录后)

    我刚刚开始使用 OneDrive API 及其附带的示例程序 OneDriveApiBrowser 正如预期的那样 我第一次登录时 使用 登录到 MSA 系统要求我提供凭据 我的 2 因素代码 最后出现一个权限屏幕 询问我是否批准应用程序想
  • iOS - Google AdMob v6.12.0 - “idfa 类丢失,不会收集 idfa”

    我在 iOS 8 目标 iOS 7 中的一个项目中使用 Google AdMob DFP 和中介插页式广告 尽管我已经包含了我认为 AdMob v6 12 0 所需的所有框架 根据 AdMob 网站 但我在 Xcode 中看到以下警告消息
  • 构建配置特定资源(调试与发布)

    有谁知道一种聪明的方法 最好使用 Eclipse ADT 工作流程 根据项目是调试还是发布构建 即在 Eclipse 中应用程序是运行还是导出 将特定资源应用于项目 我们经常遇到的常见用例是 API 密钥 如地图 最好建立一个项目 专门为所
  • 将多行分组并连接为一行

    我想将所有 文本 行 连接 成一行并得到一行作为结果 这可能吗 我使用 MSSQL Server 2005 使用 FOR XML 路径 SELECT Text AS text FROM table FOR XML PATH 另一种选择 使用
  • 将相机限制在地面覆盖层上?谷歌地图 Android API v2

    我正在尝试向我的用户显示带有标记的地面覆盖层 我试图将视图限制为仅显示地图上的此图像 我希望用户只能将图像视为放置在地图上的地面叠加层 而无法转到周围的地图 如果他们越过边缘 手势就会被阻止 我想要这样的东西 我不想要这个 仅显示地面覆盖地
  • 如何在实践中创建幽灵小工具?

    我正在开发 NASM GCC 针对 ELF64 PoC它使用一个幽灵小工具来测量访问一组缓存行的时间 冲洗 重新加载 如何制作一个可靠的幽灵小工具 我相信我理解 FLUSH RELOAD 技术背后的理论 但在实践中 尽管有一些噪音 我无法生
  • 使用 BinaryFormatter 反序列化加密数据时出现问题

    这是我的代码 public static void Save