我加密了一些数据:
echo -n aaaa | openssl enc -aes-128-ecb -K E5E9FA1BA31ECD1AE84F75CAAA474F3A -nosalt -out o
这可以正确解码:
base64 o | openssl enc -d -aes-128-ecb -K E5E9FA1BA31ECD1AE84F75CAAA474F3A -nosalt -base64
但这失败了:
echo -n 0y14OkIoAkNcGyXft6qZ8w== | openssl enc -d -aes-128-ecb -K E5E9FA1BA31ECD1AE84F75CAAA474F3A -nosalt -base64
bad decrypt
140357156597784:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:518:
base64 o
返回0y14OkIoAkNcGyXft6qZ8w==
。
为什么第二种方法会失败呢?
答案1
base64
对换行符不那么挑剔:
echo -n 0y14OkIoAkNcGyXft6qZ8w== | base64 -d | openssl enc -d -aes-128-ecb -K E5E9FA1BA31ECD1AE84F75CAAA474F3A -nosalt
我的猜测是你遇到了一个极端的情况openssl
。