正确加密 aes-128-cbc 上的文本的 shell 命令是什么?

What's the shell command to encrypt a text on aes-128-cbc correctly?

我想可能是openssl,但我就是无法获取正确的参数。

例如,我可以通过这个在线工具得到正确的输出

https://www.devglan.com/online-tools/aes-encryption-decryption,

输出如我所料是正确的,但是通过命令:

# echo -n "abcd" |openssl enc -aes-128-cbc -K EEEEEEEEEEEEEEEE -iv FFFFFFFFFFFFFFFF -nopad | xxd
bad decrypt
139769171543968:error:0607F08A:digital envelope routines:EVP_EncryptFinal_ex:data not multiple of block length:evp_enc.c:479:

# echo -n "abcd" |openssl enc -aes-128-cbc -K EEEEEEEEEEEEEEEE -iv FFFFFFFFFFFFFFFF | xxd
0000000: 37fa 2274 4251 cd91 66ad 761c a7ed bbc5  7."tBQ..f.v.....

# echo -n "abcd" |openssl enc -aes-128-cbc -K EEEEEEEEEEEEEEEE -iv FFFFFFFFFFFFFFFF
7ú"tBQ͑f­v§í»År

我无法得到相同的输出,所以你能帮忙提供一个可以给出相同输出的shell命令(首选openssl)吗?

更新:

感谢Bob的回答,我可以得到加密命令,但是得到“abcd”的解密命令是什么?以下无效:

echo -n "f72bbb809d7648fa2010a2fb55602185" |openssl enc -aes-128-cbc -d -K 45454545454545454545454545454545 -iv 46464646464646464646464646464646
bad decrypt
139672610080672:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:611:

openssl 需要对手动密钥和 IV 进行十六进制编码,而不是 ASCII 编码。 (ASCII 或 UTF-8 编码这些,正如在线工具似乎正在做的那样,大大减少了您的密钥空间并使 AES 不安全。)

“E”是0x45,“F”是0x46,所以等效的openssl命令是:

echo -n "abcd" |openssl enc -aes-128-cbc -K 45454545454545454545454545454545 -iv 46464646464646464646464646464646 | xxd
00000000: f72b bb80 9d76 48fa 2010 a2fb 5560 2185  .+...vH. ...U`!.