使用 OpenSSL enc 子命令进行 TripleDES 加密

使用 OpenSSL enc 子命令进行 TripleDES 加密

我有一个使用 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:

ENC_DATA 的内容如下电子海图数据

在这里我想要获得与在线工具相同的结果。

在同一组文件上执行选项后,相同的命令也能正常工作-e。有人能告诉我为什么会出现这个错误以及如何消除它吗?

答案1

尝试使用.-K代替-k.-k作为密码短语和-K十六进制密钥。您可能不再需要该-nosalt选项。

您需要-nopad自行使用和删除位填充。

位填充由一个设置为 1 的位和后跟多个设置为 0 的位组成。如果明文由字节组成 - 通常如此 - 那么位填充等于一个字节80后跟零个或多个00有价值的字节。

目前通常使用与 PKCS#7 兼容的填充。OpenSSL 只能删除 PKCS#7 填充。

相关内容