Concatene 2 cadeias binárias na forma base64

0

Eu tenho duas strings codificadas BASE64 e gostaria de obter a codificação BASE64 da concatenação binária das duas strings usando apenas a linha de comando.

Exemplo:

> $ echo -n "\x01\x02" |base64                                                          
AQI=

> $ echo -n "\x03\x04" |base64                                                              
AwQ=

> $ echo -n "\x01\x02\x03\x04" |base64
AQIDBA==

Assim, os valores de entrada para o meu problema seriam AQI= e AwQ= , a saída desejada é AQIDBA==

    
por mat 08.06.2017 / 14:17

2 respostas

2

Provavelmente, é mais fácil decodificar as entradas e codificar novamente:

$ echo "AQI=AwQ=" | base64 -d | base64
AQIDBA==

(Ou apenas execute o decodificador separadamente para cada string se a leitura da string após o = padding ofender sua sensibilidade.)

$ (echo "AQI=" |base64 -d ; echo "AwQ=" |base64 -d) | base64
AQIDBA==
    
por 08.06.2017 / 14:20
3

com bash :

str1=$(echo -ne "\x01\x02" | base64)
str2=$(echo -ne "\x03\x04" | base64)
if [[ $str1 =~ =$ ]; then
    concat=$( { base64 -d <<<"$str1"; base64 -d <<<"$str2"; } | base64 )
else
    concat="${str1}${str2}"
fi
printf '%s\n' "$concat"

O ponto é que, se str1 não terminar em = , o formulário Base64 não terá preenchimento, então ele pode ser concatenado exatamente como é. Caso contrário, a string precisa ser recodificada.

    
por 08.06.2017 / 14:32