Encryption Openssl解密不工作

Encryption Openssl解密不工作,encryption,openssl,cryptography,Encryption,Openssl,Cryptography,我正在尝试使用openssl对命令行中的文本进行加密和解密。我可以加密文本,但无法解密文本 以下是我如何从命令行加密文本: ➜ ~ echo -n 'Foo Bar' | openssl enc -aes-128-ecb -K 123456789 | openssl enc -base64 上面的命令提供以下输出: RxmxBbcIFm5ZMiQIBYDr4Q== 以下是我试图解密文本的方式: ➜ ~ echo -n 'RxmxBbcIFm5ZMiQIBYDr4Q==' | ope

我正在尝试使用
openssl
对命令行中的文本进行
加密和
解密。我可以
加密
文本,但无法
解密
文本

以下是我如何从命令行加密文本:

➜  ~  echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 | openssl enc -base64
上面的命令提供以下输出:

RxmxBbcIFm5ZMiQIBYDr4Q==
以下是我试图解密文本的方式:

➜  ~  echo -n 'RxmxBbcIFm5ZMiQIBYDr4Q==' | openssl enc -aes-128-ecb  -K 123456789 | openssl enc -base64 -d
当我运行上述命令时,屏幕上没有显示任何输出:

➜  ~
知道如何从终端解密代码吗

谢谢这部分:

openssl enc -aes-128-ecb  -K 123456789
输出原始数据。当您尝试解密它时,您正在添加
-base64
。输出不是base64,因此失败。在您的特殊情况下,您的意思似乎是:

echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 | openssl enc -aes-128-ecb -d -K 123456789
要加密并输出base64,您需要:

echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 -base64
echo 'RxmxBbcIFm5ZMiQIBYDr4Q==' | openssl enc -d -aes-128-ecb -K 123456789 -base64
要解密并接受base64,您需要:

echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 -base64
echo 'RxmxBbcIFm5ZMiQIBYDr4Q==' | openssl enc -d -aes-128-ecb -K 123456789 -base64
正如user1516873所指出的,要使用base64输入,您需要一个尾随的换行符,因此没有
-n
,但这并不是代码中的主要问题。它只适用于Base64,一般不适用于加密或解密。您还可以使用
-A
而不传递换行符
-base64
-a
相同,后者需要多行base64块,而
-a
需要全部在一行上(因此不需要\n)。

此部分:

openssl enc -aes-128-ecb  -K 123456789
输出原始数据。当您尝试解密它时,您正在添加
-base64
。输出不是base64,因此失败。在您的特殊情况下,您的意思似乎是:

echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 | openssl enc -aes-128-ecb -d -K 123456789
要加密并输出base64,您需要:

echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 -base64
echo 'RxmxBbcIFm5ZMiQIBYDr4Q==' | openssl enc -d -aes-128-ecb -K 123456789 -base64
要解密并接受base64,您需要:

echo -n 'Foo Bar' | openssl enc -aes-128-ecb  -K 123456789 -base64
echo 'RxmxBbcIFm5ZMiQIBYDr4Q==' | openssl enc -d -aes-128-ecb -K 123456789 -base64

正如user1516873所指出的,要使用base64输入,您需要一个尾随的换行符,因此没有
-n
,但这并不是代码中的主要问题。它只适用于Base64,一般不适用于加密或解密。您还可以使用
-A
而不传递换行符
-base64
-a
相同,后者需要多行base64块,而
-a
需要全部在一行上(因此不需要\n)。

命令中的-n标志出现问题。openssl需要\n符号才能成功解密

$echo eoGjHSco3ee2nOjibu7a3g== | openssl enc -d -base64 -aes-128-ecb  -K 123456789
Foo Bar
$
比较

$ echo 'Foo Bar' | openssl enc -e -aes-128-ecb -base64 -K 123456789
eoGjHSco3ee2nOjibu7a3g==

所以它同时影响加密和解密

$echo eoGjHSco3ee2nOjibu7a3g== | openssl enc -d -base64 -aes-128-ecb  -K 123456789
Foo Bar
$


echo
命令中的-n标志出现问题。openssl需要\n符号才能成功解密

$echo eoGjHSco3ee2nOjibu7a3g== | openssl enc -d -base64 -aes-128-ecb  -K 123456789
Foo Bar
$
比较

$ echo 'Foo Bar' | openssl enc -e -aes-128-ecb -base64 -K 123456789
eoGjHSco3ee2nOjibu7a3g==

所以它同时影响加密和解密

$echo eoGjHSco3ee2nOjibu7a3g== | openssl enc -d -base64 -aes-128-ecb  -K 123456789
Foo Bar
$


嗨,Rob,如果我删除
-base64
,那么我将获得以下输出
��E���D��K�#�gg[��2.�'h8�天然橡胶��%。如何获得可读格式的输出。谢谢,如果我删除
-base64
,那么我将获得以下输出
��E���D��K�#�gg[��2.�'h8�天然橡胶��%。如何获得可读格式的输出。谢谢