【发布时间】:2022-01-11 08:33:54
【问题描述】:
我正在尝试解密第 3 方提供给我的凭据文件,以便通过将其写入 .txt 文件来使用凭据。但不幸的是,我一直收到错误消息
我使用以下命令生成了公钥和私钥:
openssl genrsa -des3 -out id_rsa.pem 2048
openssl rsa -in id_rsa.pem -outform PEM -pubout -out id_rsa.pub.pem
我发送了公钥 id_rsa.pub.pem 以获取加密文件,并收到了 2 个使用我发送的公钥加密的文件 key.bin.enc 和 cred_file.enc
我能够使用如下所示的命令生成一个 key.bin 文件:
openssl rsautl -decrypt -inkey id_rsa.pem -in key.bin.enc -out key.bin
第一种方法:
openssl rsautl -decrypt -inkey id_rsa.pem -in key.bin.enc -out key.bin
Enter pass phrase for id_rsa.pem:
pavanvasan@Pavans-MacBook-Pro ~ % openssl enc -d -aes-256-cbc -in cred_file.enc -out cred_file.txt -pass file:./key.bin
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
4362464768:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:610:
替代方法:
openssl enc -d -aes-256-cbc -md md5 -in cred_file.enc -out cred_file.txt
enter aes-256-cbc decryption password:
* WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
4551466496:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:610:
我的 OpenSSL 版本是 OpenSSL 1.1.1m,而第 3 方提供商使用的是 OpenSSL 版本 1.1.1j
使用 -iter 或 -pbkdf2 会更好是什么意思?有没有办法解密 .enc 文件? 我在这里想念什么?请务必告诉我。
谢谢。
【问题讨论】:
-
我假设如果您从第 3 方获取文件,那么您还应该从第 3 方获取使用这些文件所需的确切命令。
-
这些是给出的命令,如下所示@Robert:[CMD_1 => openssl rsautl -decrypt -inkey id_rsa.pem -in key.bin.enc -out key.bin] [CMD_2 => openssl enc -d -aes-256-cbc -in cred_file.enc -out cred_file.txt -pass file:./key.bin] 第一个命令成功(CMD_1),我得到了key.bin文件,但错误是在执行第二个命令(CMD_2)期间被抛出
-
然后将该包传达给第 3 方并请求正确的命令。
-
我从第 3 方团队得到了这些命令。我把这些放进去是因为即使他们也不确定问题是什么,经过几次讨论
-
-iter 或 -pbkdf2 使用 PBKDF2 作为密钥派生函数,而不是旧的默认值(-iter 可以用于指定 PBKDF2 和迭代次数)。由于 PBKDF2 更安全,如果不使用 PBKDF2,则默认输出此消息。如果 CMD2 正确,则不应用 PBKDF2,您可以忽略警告。检查您是否使用了正确的 cred_file.enc 和正确的 key.bin。也许数据只是不一致,即 key.bin.enc 不包含解密 cred_file.enc 所需的(加密)密钥。或者毕竟使用了 PBKDF2。这个要跟对方说清楚。
标签: encryption openssl