我有一个使用 OpenSSL 进行 RSA 和 DES/TDES 操作的工具。经过工具处理后,我得到了key = 4F324364970DBA5DE058EF0EAE54625E
加密数据,如下所示data = D4B596A6724A32B4663965688F28E01C
当我尝试在线工具时DES计算器对于解密,解密后需要纯文本,我发现,需要尝试使用 CBC 模式的 TDES。
我尝试使用以下命令通过 OpenSSL 执行相同操作(解密):
C:\OpenSSL-Win32\bin>openssl enc -d -des-ede-cbc -nosalt -k 4F324364970DBA5DE058
EF0EAE54625E -iv 0000000000000000 -in ENC_DATA -out ENC_DATA_O
bad decrypt
6088:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:.\
crypto\evp\evp_enc.c:529:
在这里我想要获得与在线工具相同的结果。
在同一组文件上执行选项后,相同的命令也能正常工作-e
。有人能告诉我为什么会出现这个错误以及如何消除它吗?
答案1
尝试使用.-K
代替-k
.-k
作为密码短语和-K
十六进制密钥。您可能不再需要该-nosalt
选项。
您需要-nopad
自行使用和删除位填充。
位填充由一个设置为 1 的位和后跟多个设置为 0 的位组成。如果明文由字节组成 - 通常如此 - 那么位填充等于一个字节80
后跟零个或多个00
有价值的字节。
目前通常使用与 PKCS#7 兼容的填充。OpenSSL 只能删除 PKCS#7 填充。