迁移AES加密库

时间:2020-06-25 14:45:22

标签: encryption aes chilkat

目标

我们一直在使用EasyByte的Cryptocx库通过AES256加密文档。该库是32位的,阻止了我们构建应用程序的64位版本。 EasyByte停业了,并且没有64位版本,源代码或对该库的支持。

我们想使用Chilkat的64位ActiveX组件来直接解密文档。通过解密和重新加密来迁移我们所有客户的文档将是巨大的费用。

我正在尝试推断操作模式(ECB,CBC…),以便可以向Chilkat发送正确的参数。我们使用的Cryptocx方法仅接受源文件和目标文件以及字符串密码:

http://www.easybyte.com/support/cryptocx/aesfileencrypt.html

我尝试过的事情

我没有很强的密码学背景,但这就是我尝试过的。

一个64字节的输入文件(AES中的4个块),填充了As(十六进制41)。密码的32个字符的字符串,也用As填充。通过调用先前的方法进行多次加密(相同的文件,相同的密码)并使用十六进制编辑器,我可以观察到文件在加密的文件中具有五个16字节的块。

前四个块相同,第五个不同。这是初始化向量存储在文件中吗?如果所有文件都不同,那么前四个块也不应该不一样吗?

假设它是CBC(因为Wikipedia文章声称使用率最高),我尝试从文件中删除最后16个字节(使用十六进制编辑器),并将它们用作IV来解密文件。

但是我没有得到预期的明文。

某些代码

这是我在VB.net中尝试过的代码:

Dim chilkat As ChilkatCrypt2 = New ChilkatCrypt2

chilkat.UnlockComponent(licenseKey)
chilkat.CryptAlgorithm = "aes"
chilkat.KeyLength = 256
chilkat.CipherMode = "cbc"
chilkat.SetEncodedKey("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "ascii")
chilkat.SetEncodedIV("36cd36dae64316e80d50871e3b26b4bb", "hex")

Dim result = chilkat.CkDecryptFile(pathToEncryptedFile, pathToDecryptedFile)

If result = 0 Then
    Console.WriteLine(chilkat.LastErrorText)
    Console.ReadLine()
End If

我希望能有所指路。甚至可以在不知道实现细节的情况下从输出中推断出正确的参数吗?

非常感谢。

0 个答案:

没有答案
相关问题