A construção da string aqui <<<…
alimenta a string dada mais uma nova linha como entrada para o comando. Então, openssl sha1 -binary <<< 'a0+ZvgYqsMFHRerif0go8g==258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
é equivalente a
printf '%s\n' 'a0+ZvgYqsMFHRerif0go8g==258EAFA5-E914-47DA-95CA-C5AB0DC85B11' | openssl sha1 -binary
Mas sua especificação diz “Chave de concatenação com 258EAFA5-E914-47DA-95CA-C5AB0DC85B11”, não “Tecla de concatenação com 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 e uma nova linha”. Então você precisa de
printf '%s' 'a0+ZvgYqsMFHRerif0go8g==258EAFA5-E914-47DA-95CA-C5AB0DC85B11' | openssl sha1 -binary
e isso produz tswGtNOxrRhDmC04XQaDigMeaJA=
.
echo -n …
é equivalente a printf %s …
, exceto que há shells que não suportam echo -n
ou que expandem escape de barras invertidas em echo …
, enquanto printf %s …
tem um comportamento padrão (sempre imprime o argumento literalmente) .