我正在尝试解密一个文本,它是用给定的密钥用AES-256-ECB加密的。为了解密,我使用的是用于加密的openssl的相同版本(OpenSSL 1.1.1d,2019年9月10日)。
要解密的字符串:VAWawVAWawxiyH20dI+t5NPAY9w==
(file.txt内部)密钥:461a966faef244e4808d6b2b8e928d01
(key.txt内部)
我尝试过这些命令:
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
。有什么问题吗?
发布于 2020-01-14 19:09:40
openssl enc
通常使用密码来派生密钥。因此,它是用于解密文件的派生密钥。派生过程需要一个“盐”,在加密过程中,openssl enc
将该盐存储在文件的开头,并用一个“魔术数字”来标识它。如果缺少幻数(通常是因为文件不是由openssl enc
加密的,或者因为没有使用基于密码的密钥派生方法),那么您会得到这个错误。
-kfile
选项告诉OpenSSL从文件中读取密码,然后从中派生密钥。您可能想要的是根本不使用密码派生,而是使用显式密钥。在这种情况下,您需要使用-K
选项,并在命令行上使用十六进制提供密钥。
https://stackoverflow.com/questions/59730397
复制相似问题