当前位置: 首页 > 知识库问答 >
问题:

OpenSSL-AES-256-ECB使用密钥解密,错误的魔术数字

万俟经纶
2023-03-14

我正在尝试解密一个文本,它是用AES-256-ECB用给定的密钥加密的。为了解密,Im使用了用于加密的相同版本的openssl(openssl 1.1.1d,2019年9月10日)。

我试过这些命令:

cat file.txt | base64 -d > file2.txt 

openssl enc -AES-256-ECB -d -in file2.txt -out answer.txt --kfile key.txt

我得到的是:bad magic number。有什么问题?

共有1个答案

丁灿
2023-03-14

OpenSSL enc通常使用密码来派生密钥。因此它是用于解密文件的派生密钥。派生过程需要一个“salt”,而opensslenc加密过程中将该salt存储在文件的开头,并将其与一个“神奇数字”一起标识。如果缺少神奇的数字(通常是因为文件没有通过OpenSSLenc加密,或者因为没有使用基于密码的密钥派生派生方法),那么就会出现这个错误。

-kfile选项告诉OpenSSL从文件中读取密码,然后从中派生密钥。可能您想要的是根本不使用密码派生,而是使用显式密钥。在这种情况下,您需要使用-k选项,并使用十六进制在命令行上提供键。

 类似资料:
  • 我是密码学的新手。我的要求是对使用openssl加密/解密的文本进行解密/加密。我们在Openssl中使用的算法是aes-256-cbc。因此,我尝试在我的应用程序中实现相同的功能。到目前为止,在谷歌搜索了很多次之后,我所能做的就是。。 我的openssl命令是 我的密钥长度是32位IV是16位 Thnx...

  • 我正在尝试将我的应用程序从128位AES密钥升级为256位AES。然而,当我将第54行从128更改为256时,我会得到以下密钥大小错误。 java.security.无效密钥异常: 非法的密钥大小 我已正确安装了JCE文件,我的应用程序生成较长的密钥这一事实证明了这一点。 我在其他文章中看到过“AES / CBC / PKCS7Padding”加密方法,但这只会让我遇到这个例外:

  • 我编写了一个简单的Java AES加密和解密,如下所示(用于学习): 编辑: 我想我搞错了。黑客可能不会使用我的程序来解密。所以对于AES来说,如果一个人解密失败,他会知道解密失败,但不会像我想的那样,从解密中得到错误的字节?这太可怕了...

  • 我使用以下命令加密了一个文件 openssl rand 32>test.key openssl enc-aes-256-cbc-iter 10000-pbkdf2-salt-输入test.txt-输出test.txt.enc-通过文件:test.key 我的代码 我得到的错误 我引用了以下链接 尝试使用时,仍然得到错误

  • 字符串像这里一样用php加密。可以用这个用参数解密:Rijndael-256,ECB,Base64。但是我的ActionScript代码无法解密它: 更新: “它无法解密”意味着我弄错了纯文本。 在php中,明文首先由aes-256-ecb加密。然后由Base64编码。在ActionScript中,这些步骤以相反的顺序进行。 UPD2: 编码-解码测试: 在 停止后的输出是: 更新3: 它适用于P