我正在开发一个 ctf 游戏:
在 ECB 模式下使用 AES 加密。所有值 base64 编码
ciphertext = 8LBUVZfDfI6wnggG1uUYuQsRoGd08pGwHCN++R5rabMW9PJmWHWcSrjy5Tfffj6L
key = 3q1FxGhuZ5fQYbjzDxgQ35==
Run Code Online (Sandbox Code Playgroud)
我试图在我的终端中解密它,将密文保留在 base64 中并使用该-base64
标志,但没有走运。然后我去了http://extranet.cryptomathic.com/aescalc,在将值转换为十六进制后,我能够解密:
key: DEAD45C4686E6797D061B8F30F1810DF
text: F0B0545597C37C8EB09E0806D6E518B90B11A06774F291B01C237EF91E6B69B316F4F26658759C4AB8F2E537DF7E3E8B
out: 7B796F755F73686F756C645F6E6F745F706F73745F7468655F61637475616C5F6374665F76616C75657D5F5F5F5F5F5F
Run Code Online (Sandbox Code Playgroud)
然后我回到我的终端尝试:
echo -n F0B0545597C37C8EB09E0806D6E518B90B11A06774F291B01C237EF91E6B69B316F4F26658759C4AB8F2E537DF7E3E8B | openssl enc -d -K DEAD45C4686E6797D061B8F30F1810DF -aes-128-ecb -nosalt
Run Code Online (Sandbox Code Playgroud)
但我遇到了同样的错误:
bad decrypt
140735124906848:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:531:
Run Code Online (Sandbox Code Playgroud)
我已经在 Ubuntu 17.04 上尝试过这个,现在在我的 MacOSX 上使用 OpenSSL 1.0.2l。为什么我不能在自己的终端中解密?