echo 造成的 base64 結果錯誤

2021-10-24 14:17:41 字數 650 閱讀 2443

原始字串為mcinventoryv4er9ll1!ss,使用如下方式在命令列直接編碼

echo 'mcinventoryv4er9ll1!ss' | base64
得到的結果是

bwnpbnzlbnrvcnl2n**yowxsmsfzcwo=
而正確的編碼結果應該是

bwnpbnzlbnrvcnl2n**yowxsmsfzcw==
經過嘗試,可能是由於字串末尾不可見的換行字元造成的問題。也是因為不同版本echo的實現造成的。

直接在命令列編碼的時候,使用

echo -n 'mcinventoryv4er9ll1!ss' | base64
即可得到正確的編碼結果。

或者使用

printf 'mcinventoryv4er9ll1!ss' | base64
即可得到正確的編碼結果。

另外,在這篇文章中,還提到了各種shell背後的引用會造成的其他問題。

因此建議使用行為更加穩定的printf來進行字串的編碼操作。

C 處理base64 以及base64的原理分析

base64的原理,base64的碼表只有64個字元,如果要表達64個字元的話,使用6的bit即可完全表示 2的6次方為64 因為base64的編碼只有6個bit即可表示,而正常的字元是使用8個bit表示,8和6的最小公倍數是24,所以4個base64字元可以表示3個標準的ascll字元 publi...

base64編碼 動畫演示 Base 64 編碼

base64 是一種十分流行的編碼方式,僅僅使用 64 個字元加等號 就可以以文字的形式表示所有的二進位制資料了,因為它能夠把二進位制格式通過編碼轉換成可見字元,所有我們就可以通過的把二進位制格式比如,檔案等通過 base64 編碼然後通過文字的形式共享出去,是不是很神奇呀。把輸入的資料轉換成 二進...

物件base64轉碼 Base64編碼轉換

1 為什麼mime要有編碼轉換 在mime總結這篇經驗中,總結了mime相較於rfc 822的擴充套件功能,其中提到了rfc 822的缺陷 非英語字元都不能在電子郵件中使用 2 電子郵件中不能插入二進位制檔案 如 3 電子郵件不能有附件。能夠對文字進行簡單的加密 2 quoted printable...