Base64編碼在電子郵件中很常見,Foxmail、Outlook等郵件使用者代理髮郵件時進行SMTP驗證,就是輸入base64編碼格式的使用者名稱和密碼進行驗證的,而郵件的主體內容和附件都很普遍的使用base64編碼進行傳輸。
在使用telnet工具測試發郵件的時候,如果遇到需要驗證情況,實用的base64編碼工具就成為必要了。我在另一篇文章裡談到可以使用PHP函數來實現,這裡介紹更實用的Linux工具:base64
RHEL5系統的base64工具是coreutils安裝包裡的,一般Linux系統都已安裝。下面舉一些執行個體來說說如何使用base64,以及相關的注意事項。
這是測試檔案file,內容就只有一行字串"snailwarrior"。
[root@pps ~]# cat file
snailwarrior
1、給檔案file進行base64編碼,並列印到標準輸出
[root@pps ~]# base64 file
c25haWx3YXJyaW9yCg==
也可以這樣:
[root@pps ~]# cat file | base64
c25haWx3YXJyaW9yCg==
2、從標準輸入讀取檔案內容,base64編碼並列印到標準輸出
[root@pps ~]# base64
snailwarrior
c25haWx3YXJyaW9yCg==
我是輸入snailwarrior,斷行符號,然後按Ctrl+D結束檔案輸入的。
【注意】如果我不輸入斷行符號,連續輸入兩次Ctrl+D,看看效果如何:
[root@pps ~]# base64
snailwarriorc25haWx3YXJyaW9y
可以看出,編碼出來的字串是:c25haWx3YXJyaW9y
我的神!兩種方式編碼出來的結果不一樣啊!繼續往下測試。
3、對字串"snailwarrior"編碼,並列印到標準輸出
[root@pps ~]# echo "snailwarrior" | base64
c25haWx3YXJyaW9yCg==
這個結果跟前面"cat file"和輸入snailwarrior按斷行符號再按Ctrl+D的情況是一樣的。為什麼不按斷行符號直按兩次Ctrl+D的結果不一樣呢?我們再來看看下面這個例子:
[root@pps ~]# echo -n "snailwarrior" | base64
c25haWx3YXJyaW9y
你是不是驚訝的發現“緣由”了呢?
echo -n 選項沒有輸出字串結尾的' '換行字元,因此字串"snailwarrior"精確的base64編碼是"c25haWx3YXJyaW9y",可以用PHP函數來檢驗哦。檔案方式等進行的"snailwarrior"字串編碼都帶入了對' '的編碼,因此,不小心就會發生莫名的編碼錯誤哦。
4、Base64解碼
[root@pps ~]# echo -n "c25haWx3YXJyaW9y" | base64 -d
snailwarrior
[root@pps ~]#
摘自:http://www.soft6.com/tech/13/134492.html 並做適當調整