通过“灾难恢复”在内存和存储受限的系统上加密和/或解密大文件 (AES)

2023-11-25

我有一个相当笼统的问题,所以如果有点模糊,请原谅。

因此,我们假设有一个 1GB 的文件,需要在给定系统上加密并随后解密。

问题是系统的可用内存少于 512 MB,存储空间大约为 1.5 GB(给定或需要),因此,对于“板载”文件,我们有大约 500 MB 的“硬盘暂存空间”,并且少于 512 MB mb RAM 来“玩”。

系统在加密或解密过程中的任何时刻都不太可能经历“计划外断电”,并且需要能够在再次通电后成功恢复加密/解密过程(这似乎是一个额外令人不快的坚果)处理)。

问题是:

1)这是否可行:) ?

2)最好的策略是什么

a)用如此小的暂存空间进行加密/解密(在解密/加密时不能让整个文件散落在各处,需要以某种方式“即时”截断它......)

and

b) 实施可在如此受限的环境中发挥作用的灾难恢复?

附: 使用的密码必须是 AES。

我专门研究了 AES-CTR,但在无法将整个解密文件保存到最后的环境中,它似乎对于灾难恢复恶作剧来说并不是一个好兆头......

[编辑添加] 我想我最终会按照伊塞尔尼的方式去做。


如果您有办法将 AES 状态向量与文件位置一起保存,这是可行的。

  1. 将 AES 状态和文件位置 P 保存到文件 STAGE1 和 STAGE2
  2. 读取一大块(例如 10 MB)加密/解密数据
  3. 将解密/加密的块写入外部暂存区 SCRATCH
  4. 记录 SCRATCH 已完成的事实
  5. 在原始文件的相同位置写入 SCRATCH
  6. 记录 SCRATCH 已成功复制的事实
  7. Goto 1

如果您在第 1 阶段后发生严重崩溃,并且 STAGE1 和 STAGE2 不一致,您只需重新启动并假设最早 P 的阶段是好的。 如果您在第 2 阶段期间或之后发生严重崩溃,您将损失 10 MB 的工作量:但 AES 和 P 都很好,因此您只需重复第 2 阶段即可。 如果你在第 3 阶段崩溃,那么在恢复时你将找不到第 4 阶段的标记,因此会知道 SCRATCH 不可靠,必须重新生成。有了STAGE1/STAGE2,你就能做到这一点。 如果你在第 4 阶段崩溃,你会相信 SCRATCH 必须重新生成,即使你可以避免这种情况 - 但除了一点时间之外,你在再生中不会损失任何东西。 同样,如果在第 5 阶段或第 6 阶段提交到磁盘之前崩溃,您只需重复阶段 5 和 6。您知道不必重新生成 SCRATCH,因为阶段 4 已提交到磁盘。如果你在第 1 阶段之后崩溃,你仍然有一个很好的 SCRATCH 可以复制。

所有这些都假设 10 MB 超过了缓存(操作系统 + 硬盘,如果回写)的数据价值。如果不是,请增加到 32 或 64 MB。恢复速度会相应变慢。

如果这些函数可用,在每个写入阶段完成后,刷新()和同步()可能会有所帮助。

总写入时间比正常情况的两倍多一点,因为需要“写入两次”才能确定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过“灾难恢复”在内存和存储受限的系统上加密和/或解密大文件 (AES) 的相关文章

  • OpenSSL 和 CryptoJS SHA256 加密转换

    我的问题是 OpenSSL 的新版本与 CryptoJS 的默认设置不兼容 openssl enc 用于基于密码的密钥派生的默认哈希值 1 1 0 中更改为 SHA256 而较低版本中更改为 MD5 https unix stackexch
  • 如何实现加密的共享偏好设置

    如何在我的 android java 应用程序中实现加密的共享首选项https developer android google cn reference androidx security crypto EncryptedSharedPr
  • 有没有一种简单的方法来加密java对象?

    我想将序列化对象存储到文件中 但我想对其进行加密 它不需要非常强的加密 我只是想要一些简单的东西 最好是最多几行代码 这会让其他人加载起来更加困难 我已经研究过 SealedObject 但关键是阻止我 理想情况下 我只想传递一个字符串作为
  • 兼容 C# 和 javascript 的 AES 加密和解密

    我正在尝试用 C 和 Javascript 编写两个类 我可以在整个项目中使用它们在交换数据时使用 AES 加密或解密数据 使用 AES 我将 Salt 32 字节 和 IV 16 字节 嵌入到加密结果中 这在测试时分别适用于这两个类 将
  • 使用带有 ORDER 子句的 AES_DECRYPT 在 MySQL 中返回 BLOB 数据

    我正在创建一个系统 用户可以在其中通过 PHP 和 MySQL 数据库存储消息 并且我使用 MySQL AES ENCRYPT 函数来加密这些消息的内容 这是我的posts table CREATE TABLE IF NOT EXISTS
  • 从 X.509 证书中提取 PEM 公钥

    我已经创建了一个包含公钥 DER 文件的证书 但我现在需要 PEM 格式的公钥用于不同的平台 目的是使用相同的公钥 我使用创建它iOS 中的 RSA 加密并使用 PHP 解密 http jslim net blog 2013 01 05 r
  • iPhone 上 NSString 的 AES 加密

    任何人都可以为我指明正确的方向 以便能够加密字符串 并返回带有加密数据的另一个字符串吗 我一直在尝试使用 AES256 加密 我想编写一种需要两个 NSString 实例的方法 一个是要加密的消息 另一个是用于加密它的 密码 我怀疑我必须生
  • 在 C# 中解析 Cryptocompare API Json 数据

    我正在加载数据 这是返回 Response Success Type 100 Aggregated false Data time 1504979760 high 14 26 low 14 26 open 14 26 volumefrom
  • 将 CryptoStream 解密为 MemoryStream

    我编写了一个过程 其中文件被加密并上传到 Azure 然后必须解密下载过程 这会失败并出现 填充无效且无法删除 错误 或 要解密的数据长度为无效的 错误 我在网上尝试了很多解决方案 包括C 使用 RijndaelManaged 和 Cryp
  • PHP file_get_contents 有限制吗? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何加密然后解密数据库类文件中使用的用户名和密码文本

    我创建了一个类文件database php 它处理所有sql 查询并连接到数据库 我将数据库的用户名和密码存储在一个变量中 如果可以访问 php 文件 很容易看到 我想加密该用户名和密码 这样即使在拥有该 php 文件之后 人们也无法知道原
  • iOS:获取 iPhone 密码以生成用于加密的对称密钥

    我正在开发一个 iOS 应用程序 该应用程序分发到所有用密码锁定的设备 有没有办法获取设备密码 或其某种形式 来动态生成对称密钥 例如使用 PBKDF2 来加密 解密数据 否 没有 API 可以确定是否设置了设备密码或获取密码 如果已设置
  • 为什么桌面 AES 文件 IO 与 Android AES 文件 IO 不兼容?

    我已将一个应用程序从 Android 移植到桌面 该应用程序使用 AES 加密一些私人数据 两个应用程序都能够加密和解密数据以供自己使用 但无法解密其他应用程序的数据 AES 密钥 IV 和算法是相同的 这两个应用程序之间的主要区别在于 a
  • 来自公共字符串的 Android RSA 加密

    我正在开发一个 Android 应用程序 我希望用户能够使用其他人的公钥加密消息 系统将生成公钥 私钥对 然后可以将消息秘密发送给其他用户 我正在创建一个加密类 它将处理消息的加密 解密 不幸的是我遇到了一些问题 在这种方法中 我想传递用户
  • 在java中使用共享密钥加密/解密?

    我有客户令牌 我正在从一个 Web 应用程序 如 app1 发送到另一个 Web 应用程序 如 app2 我想加密客户令牌 在 app1 上 并使用在 app1 和 app2 上共享的密钥在 app2 上对其进行解密 我不知道如何开始 这将
  • 使用 python 解析大型(20GB)文本文件 - 将 2 行读为 1

    我正在解析一个 20Gb 文件并将满足特定条件的行输出到另一个文件 但是有时 python 会一次读取 2 行并将它们连接起来 inputFileHandle open inputFileName r row 0 for line in i
  • 代码签名证书选项

    我被分配了为我的公司购买数字证书来签署我们的代码的任务 我们在 Microsoft 领域开发应用程序 主要是 WPF 或基于 Web 我调查了选项 发现 Comodo 价格合理且反应灵敏 我们准备继续通过它们购买证书 但是在注册表单中有各种
  • JWT Web 令牌加密 - SecurityAlgoritms.HmacSha256 与 SecurityAlgoritms.HmacSha256Signature

    用于基于令牌的身份验证Microsoft IdentityModel Tokens提供了可用于创建的安全算法列表SigningCredentials string secretKey MySuperSecretKey byte keybyt
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • Android 中的字符串加密

    我正在使用代码进行加密和加密 它没有给出字符串结果 字节数组未转换为字符串 我几乎尝试了所有方法将字节数组转换为字符 但没有给出结果 public class EncryptionTest extends Activity EditText

随机推荐

  • 如果没有断言,pytest 会失败吗?

    今天我的测试失败了 但很高兴成功了 因为我忘记了最后一行相当重要的一行 assert actual expected 我希望机器将来能够发现这个错误 有没有办法让 pytest 检测测试函数是否未断言任何内容 并将其视为测试失败 当然 这需
  • firestore 规则中是否有循环?

    我想知道是否有更简单的方法来实现这个规则 刚刚开始尝试 firestore match emails emailId allow write if request resource data attachments size 0 reque
  • 在C#背后的代码中实现javascript确认框

    我想从代码后面实现javascript确认框 我的要求是在一种方法中我需要提出一个确认框 根据结果我需要实现差异功能 例如 如果确认框确定 则添加税费 如果取消则不加税 我正在尝试这样的事情 但它对我没有帮助 ScriptManager R
  • Netcat:使用 nc -l port_number 而不是 nc -l -p port_number

    这个问题是在这个问题之后 在 openSUSE 中工作的套接字在 Debian 中不起作用 在 Debian 系统上使用套接字时 我必须使用 nc l p port number 来模拟我想要与之通信的服务器 如果我使用 nc l port
  • 使用 Oracle 的块过程 PL/SQL

    我有一个程序 我希望只有一个用户可以同时执行该程序 这就是我的想法 考虑通过 dbms lock 使用命名锁 http download oracle com docs cd B28359 01 appdev 111 b28419 d lo
  • RESTful 应用程序中的乐观锁定

    在工作中 我们正在开发一个 RESTful 应用程序 其中数据层将由 Hibernate 处理 但我们不确定如何处理实体的更新 我们计划执行以下操作 1 客户端通过id请求实体2 Hibernate加载实体 请求的字段 始终带有版本 被复制
  • 如何使用 asyncio 连接阻塞和非阻塞代码

    我正在尝试在事件循环之外使用协程函数 在本例中 我想调用 Django 中的一个函数 该函数也可以在事件循环内使用 如果不让调用函数成为协程 似乎没有办法做到这一点 我意识到 Django 被构建为阻塞的 因此与 asyncio 不兼容 尽
  • Pandas 在第 0 个位置插入空行

    假设有以下数据框 A B 1 2 3 4 5 4 5 6 7 8 我想检查一下是否df 0 0 is nan然后在第 0 个位置插入 pd series np nan 所以在上面的情况下将会是 A B 1 2 3 4 5 4 5 6 7 8
  • 什么是 void `std::allocator`?即:`std::allocator`

    自动生成ROS 机器人操作系统 message C 头文件包含如下类型定义 typedef std msgs Header
  • 从“AutoCompleteTextView”获取当前建议

    如何获得当前最热门的建议AutoCompleteTextView 我有它建议的项目 并且我注册了一个文本更改侦听器 我在同一屏幕上还有一个列表 当他们打字时 我想将列表滚动到当前的 最佳 建议 但我不知道如何访问当前的建议 或者至少是最重要
  • 在 vim 上将项目设置为更高的突出显示优先级

    我想按照讨论显示非 ASCII 字符here 但是当注释中包含非 ASCII 字符时 语法突出显示会消失 调查了一下这个问题 我在 vim 手册中发现较早启动的项目具有更高的优先级 第三项 从help syn priority 当多个语法项
  • 如何以 clang 格式对齐函数参数名称?

    是否可以使用clang format将结构成员和函数参数名称格式化为列 例如 struct int alpha aligned to b of beta unsigned int beta MyObject gamma aligned wi
  • 重写标准 Spring MVC 异常的处理行为

    Spring Boot 似乎有处理某些异常的默认行为 我有一个休息控制器 如果我不处理HttpRequestMethodNotSupportedException in the ControllerAdvice带注释的休息控制器 应用程序返
  • SELECT DISTINCT 值并 INSERT INTO 表

    我想获取一个包含重复多次的值的列 并仅获取该值一次并将其存储以供以后使用 但同时我想在与该不同列相同的行中获取另一个值 A B C 32263 123456 44 32263 123456 45 32263 123456 46 32264
  • C# 导入 C++ dll

    我有一个托管 dll 文件 它将函数从 C dll 导入到托管环境 我在程序中使用了它的一些函数 但问题是 当我使用它时出现此错误 无法加载 DLL Libraries lib dll 找不到指定的模块 HRESULT 异常 0x80070
  • Javascript Fetch API:标头参数不起作用

    这是我的示例请求 var header new Headers Platform Version 1 App Version 1 Platform FrontEnd var myInit method GET headers header
  • 如何在同一个图上绘制箱形图和特定点?

    我们可以绘制如下箱线图 qplot factor cyl mpg data mtcars geom boxplot 并点为 qplot factor cyl mpg data mtcars geom point 你会如何结合两者 但只是为了
  • 将多行合并为一行多列数据 R

    我有一个数据集 其中以不同方式测量相同的效果 我想比较这些测量结果 我的数据集如下所示 Study MType ID Insect Mean Sd N Alla Fecundity 1 Aphid 62 7628 11 Alla RGR 1
  • java中的字符串池

    Java有字符串池 因此字符串类的对象是不可变的 但我的问题是 创建 String POOL 的必要性是什么 为什么字符串类不像其他类那样保留它自己的值 JVM 内部是否需要一些字符串 或者这是性能优势 如果是的话怎么办 池是可能的 因为字
  • 通过“灾难恢复”在内存和存储受限的系统上加密和/或解密大文件 (AES)

    我有一个相当笼统的问题 所以如果有点模糊 请原谅 因此 我们假设有一个 1GB 的文件 需要在给定系统上加密并随后解密 问题是系统的可用内存少于 512 MB 存储空间大约为 1 5 GB 给定或需要 因此 对于 板载 文件 我们有大约 5