我有一个简单的加密文件,里面有一些文本。它是用 des3 加密的,我知道密钥。然而,我一生都无法在我的 Kali VM 中解密它。然而它在 LInux Mint VM 中运行良好。我在这里束手无策......我做错了什么?
这是工作解密:
user@user-virtual-machine ~/Desktop $ openssl des3 -d -in TheKeyIsInHere.des3 -pass pass:aramisthethird
GJC13 says the key is nuorjbwyldurrurykpym
user@user-virtual-machine ~/Desktop $
这是损坏的:
root@chkali:~/Desktop/new# openssl des3 -d -in TheKeyIsInHere.des3 -pass pass:aramisthethird
bad decrypt
139786246681728:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:529:
�c]z��6z��oք��n&ΰ�Xqroot@chkali:~/Desktop/new#
两种情况下的文件是相同的(通过 md5sum 验证)。
答案1
openssl enc
基于密码的密钥派生所使用的默认哈希在 1.1.0 中更改为 SHA256,而在较低版本中则更改为 MD5。这会根据相同的密码(如果像平常一样使用盐)生成不同的密钥,并且尝试使用不同的密钥进行加密和解密会产生垃圾、错误或两者兼而有之。
要修复现有数据的此问题,-md md5
请在 1.1.0 中指定解密较低版本中的数据,并-md sha256
在较低版本中指定解密 1.1.0 中的数据。展望未来,请考虑-md
明确指定。详情请参阅https://crypto.stackexchange.com/questions/3298/is-there-a-standard-for-openssl-interoperable-aes-encryption/35614#35614(披露:我的)