【问题标题】:ccrypt will not decrypt ccrypt-j encrypted filesccrypt 不会解密 ccrypt -j 加密文件
【发布时间】:2016-03-25 03:40:03
【问题描述】:

我一直在尝试修复ccrypt-j,这是 linux ccrypt 命令的纯 java 实现。我发现初始化向量 (IV) 存在一些问题,这使得 ccrypt 除了它自己的输出之外什么都解密。

我修改了这两个库,以便始终将相同的 nonce 提供给 Rijndael 引擎的两个实现,但是,实现之间的输出 IV 始终不同,即两个库始终具有相同的结果(因为 Rijndael 是确定性的),但是这些结果总是不同的。

我知道问题只是 ccrypt 生成 IV 的方式,因为:

  1. ccrypt-j-encrypted 可以从ccrypt-j解密
  2. 如果我将 IV(加密文件的前 32 个字节)替换为 ccrypt 加密文件的 IV,ccrypt 将很好地解密它。

Ccrypt 使用自己用 C 编码的 Rijndael 实现,而 ccrypt-j 使用 Bouncy Castle 的实现。

编辑:2016 年 4 月 1 日

因为 IV 是在加密任何数据之前构建的(实际上,甚至读取任何数据)我认为问题必须出在 Bouncy Castle 和 ccrypt 自己的实现中初始化 Rjindael 的方式上。我将尝试在两种实现中执行相同的序列,看看我得到了什么。

【问题讨论】:

  • 你的问题是什么?
  • 这可能是什么原因?
  • 嗯,你已经得到了它们的来源。我会比较 IV 生成部分。
  • IV 是用 Rijndael 加密 nonce 和密码的结果。 BC 和 ccrypt 的 Rijndaels 是完全不同的实现,流程也大不相同。这就是我在这里的原因。所以也许更熟悉 Rijndael 的人可以帮助我。
  • 最好向两个项目提交错误报告。

标签: java encryption bouncycastle rijndael


【解决方案1】:

半答案

如果你看一下旧的 ccrypt,有一些关于 IV 的解释。如果我继续,4 个字节是固定的 - 幻数 - 一会儿是 c051。还讨论了有关证券的问题:

幻数:看到了 http://ccrypt.sourceforge.net/faq.html

ccrypt 来自 emacs/jka-compr:

http://www.opensource.apple.com/source/emacs/emacs-51/emacs/lisp/jka-compr.el

在 ccrypt 中,种子的构造如下:首先,随机数是 通过散列主机名、当前时间、 进程 id 和内部计数器转换为 28 字节值,使用 密码散列函数。随机数与固定的 四字节“幻数”,生成的 32 字节值被加密 通过具有给定密钥的一轮 Rijndael 分组密码。这 加密块用作种子并附加到 密文。使用幻数可以让 ccrypt 检测到 解密前密钥不匹配。

那里的幻数:http://ccrypt.sourcearchive.com/documentation/1.7-7/ccryptlib_8c-source.html

好像幻数没有变化(从 1.1 到 1.10 一样,之前我不知道)。

那又怎样?

ccrypt 旨在与先前版本(emacs,...)兼容。可加密解密,应用广泛。

那么问题来自于 ccrypt-j。

在 sourceforge 上可以看到两件重要的事情:

1 兼容性

使用 ccrypt-j 加密文件

待办事项

使用 ccrypt-j 解密文件

待办事项

那么真正有效的是什么?

2其实用的是充气城堡,用的很好,执行的标准肯定很好。

所以结论?

你不能希望 ccrypt 会改变。

那么:你可以通过ccrypt-j解密ccrypt

但是如果你想通过ccrypt解密,你必须限制ccrypt-j

我怀疑你的说法,因为它会很神奇!

如果我将 IV(加密文件的前 32 个字节)替换为 ccrypt 加密的文件,ccrypt 会很好地解密它。

但如果它有效,为什么不使用它呢? (ccrypt-j也能解密?)

最后的建议:联系 ccrypt-j 支持

希望对你有帮助

【讨论】:

  • 1.使用 ccrypt-j 加密文件很简单。他们没有在 read.me 文件中填写这些部分,但相信我,这很简单。 2. 充气城堡必须是正确的。我知道。所以我猜 Rijndael 在 ccrypt 中的实现是非标准的。 3.我的断言是正确的,前提是密钥始终相同。我认为没有ccrypt-j支持之类的东西,只是有人将ccrypt的实现上传到个人github。
猜你喜欢
  • 2013-07-10
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多