Erdelsky Rijndael 128 位块 256 位密钥 java 中的实现

Erdelsky's Rijndael 128bit blocks 256bit keys Implementation in java

不幸的是,我对密码学不太熟悉,但我需要在 java8 中实现 this algorithm。这意味着,我已经有了一些用 C 语言编写的方法加密的数据,以及 256 位的密钥,我需要使用一些 java 代码来解密这些数据。请注意,我们在 Erdelsky 的方法中所拥有的只是一个关键,没有 'salt' 也没有 'initializing vector'(至少是明确的,但我可能会弄错)。

我尝试了什么?嗯,有点:

我还在寻找解决方案,请帮忙。谢谢。

一些额外的背景。 我试图为某些游戏引擎创建打包算法的 java 实现。我假设选择了ECB加密来减少不同版本打包资产之间的熵(因为补丁系统正试图将已经加密的内容块安装到现有数据)。 JDK 1.8.112 怎么样 - 我使用 Excelsior Jet 来 AOT 编译我的程序(它将是开源的,我将把 link 附加到这个 post a稍后),但不幸的是,我以前的 AOT 编译器版本只支持 1.8.112,所以我使用相同的 JDK 版本以确保兼容性。

事实上,对于非加密货币人士(比如我)的详细回答:

  1. 块大小总是 16 字节宽,这完全没问题。
  2. 密钥长度为 256 位宽(或 32 字节),您不能在较旧的 JDK 补丁,但后来,限制已被删除,因此请将您的 JDK 更新为 Java 9、Java 8u161、Java 7u171 或 6u181,或下载并安装这个 Unlimited Strength Jurisdiction Policy.
  3. 你必须使用 ECB 加密来匹配 Erdelsky 的 Rijndael,这比 CBC less secure,但出于兼容性原因它仍然可以使用。

感谢大家的回答和讨论。干杯!