Linux
以 base64 形式連接 2 個二進製字元串
我有兩個 BASE64 編碼的字元串,我想僅使用命令行來獲取兩個字元串的二進制連接的 BASE64 編碼。
例子:
> $ echo -n "\x01\x02" |base64 AQI= > $ echo -n "\x03\x04" |base64 AwQ= > $ echo -n "\x01\x02\x03\x04" |base64 AQIDBA==
所以我的問題的輸入值是
AQI=
andAwQ=
,所需的輸出是AQIDBA==
可能最容易解碼輸入並再次編碼:
$ echo "AQI=AwQ=" | base64 -d | base64 AQIDBA==
(或者如果通過填充讀取字元串會
=
冒犯您的敏感性,則只需為每個字元串單獨執行解碼器。)$ (echo "AQI=" |base64 -d ; echo "AwQ=" |base64 -d) | base64 AQIDBA==
與
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"
關鍵是如果
str1
不以 in 結尾,=
則 Base64 表單沒有填充,因此可以按原樣連接。否則字元串需要重新編碼。