运行 Base64 命令在终端中有效,但在 bash 脚本中无效。试图解密 AES 256 加密字符串
Running Base64 command works in terminal but not in bash script. Trying to decypher an AES 256 encrypted string
我正在尝试使用 OpenSSL 解密 AES-256-CBC 加密字符串。我的加密字符串是使用此处提到的 c# 代码加密的 (OpenSSL encryption using .NET classes)
我首先尝试使用以下 openssl 命令解密,
openssl enc -d -base64 -aes-256-cbc -md md5 -pass pass:mypass -in my_file.sh_enc -out myfile.sh
但是这个命令 returns 是一个错误,
error reading input file
所以我尝试使用 -A 和 -a 而不是 -base64但是两个命令 returns 错误的幻数 .
找了一会发现需要先解码base64字符串再解密。所以我运行命令,
base64 -d my_file.sh_enc | openssl enc -d -aes-256-cbc -md md5 -pass pass:mypass -out myfile.sh
当尝试从终端执行时,此命令运行良好。 (Ubuntu 20.04).
但是当我在 .sh bash 脚本中添加相同的命令时,出现错误,
WARNING:deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
140285552608576:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:610:
我尝试将 base64 结果存储在临时文件中,然后将临时文件作为 -in arg 传递给 OpenSSL,但我仍然面临同样的问题。任何人都可以帮助我理解并提供解决方案吗?
(解释不当还请见谅,有不懂的地方请大家留言,我会尽量详细说明)
更新 1:下面是我的 bash 文件
My bash script
您的密码未正确传递。将 pass:$pass
放在双引号中。您可能需要为 shell 转义它。将任何反斜杠加倍,并在 $
.
之前放置一个反斜杠
我是这样知道的:
$ echo Hello, world | openssl enc -e -a -aes-256-cbc -md md5 -pass pass:foo -out /tmp/enc
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
$ openssl enc -d -a -aes-256-cbc -md md5 -pass pass:foo -in /tmp/enc
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
Hello, world
$ openssl enc -d -a -aes-256-cbc -md md5 -pass pass:foof -in /tmp/enc
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
140045393098112:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:610:
我正在尝试使用 OpenSSL 解密 AES-256-CBC 加密字符串。我的加密字符串是使用此处提到的 c# 代码加密的 (OpenSSL encryption using .NET classes)
我首先尝试使用以下 openssl 命令解密,
openssl enc -d -base64 -aes-256-cbc -md md5 -pass pass:mypass -in my_file.sh_enc -out myfile.sh
但是这个命令 returns 是一个错误,
error reading input file
所以我尝试使用 -A 和 -a 而不是 -base64但是两个命令 returns 错误的幻数 .
找了一会发现需要先解码base64字符串再解密。所以我运行命令,
base64 -d my_file.sh_enc | openssl enc -d -aes-256-cbc -md md5 -pass pass:mypass -out myfile.sh
当尝试从终端执行时,此命令运行良好。 (Ubuntu 20.04).
但是当我在 .sh bash 脚本中添加相同的命令时,出现错误,
WARNING:deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
140285552608576:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:610:
我尝试将 base64 结果存储在临时文件中,然后将临时文件作为 -in arg 传递给 OpenSSL,但我仍然面临同样的问题。任何人都可以帮助我理解并提供解决方案吗?
(解释不当还请见谅,有不懂的地方请大家留言,我会尽量详细说明)
更新 1:下面是我的 bash 文件 My bash script
您的密码未正确传递。将 pass:$pass
放在双引号中。您可能需要为 shell 转义它。将任何反斜杠加倍,并在 $
.
我是这样知道的:
$ echo Hello, world | openssl enc -e -a -aes-256-cbc -md md5 -pass pass:foo -out /tmp/enc
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
$ openssl enc -d -a -aes-256-cbc -md md5 -pass pass:foo -in /tmp/enc
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
Hello, world
$ openssl enc -d -a -aes-256-cbc -md md5 -pass pass:foof -in /tmp/enc
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
140045393098112:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:610: