【问题标题】:Decrypting an encrypted file and executing in Java解密加密文件并在 Java 中执行
【发布时间】:2011-12-08 14:29:05
【问题描述】:

我目前正在从事一个可以加密和解密文件的项目。我正在用 Java 开发它。

这是它的工作原理(简化):

  1. 首先我读取文件并将其转换为字节数组
  2. 然后我加密字节数组并将其写回文件

当我想运行加密文件时,我做相反的事情,所以像这样:

  1. 我读取加密文件并将其转换为字节数组
  2. 然后我解密字节数组并将其写回文件。

所以文件被转换回原来的形式。

我的问题是,我不想将解密后的字节数组作为文件写入磁盘。

有没有办法做到这一点?我想直接在内存中运行解密的字节数组。 “运行”它是指执行它,因为它是一个 Win32 可执行加密器。

提前致谢, 奥努尔

【问题讨论】:

  • 嗨,我不想提出一个死话题,但如果你能分享你描述的代码(尤其是转换为字节 []),你会为我节省大量时间 :) 请分享。

标签: java encryption


【解决方案1】:

我想说您的选择在这里是有限的,因为您依赖于 Windows 启动该过程。 Java 是跨平台的,可能无法以您想要的方式挂接到 Windows。

在纯 Java 领域之外,您可以创建一个 ramdisk 并将 EXE 写入 Ramdisk,或者可能桥接到 .NET,如this answer 中所述(以及该答案中的问题链接)。

【讨论】:

  • Windows 是否允许您执行写入 RAM 的任何旧字节块?如果是这样,那似乎是一个巨大的安全漏洞。
【解决方案2】:

也许 Java NIO 框架会适合你。看ByteBuffer和FileChannel

【讨论】:

  • 这对执行 EXE 没有帮助。
【解决方案3】:

我在 c# 中看到了示例,这正是我想要的,但是混合 2 种语言不是这个项目的选项。

我听说过 JNA 库可以做一些 win32 原生的东西。也许我应该看看它。

感谢大家的帮助,但我仍然希望有人会在这里发布我的解决方案。

奥努尔

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 2021-02-02
    • 2011-01-27
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多