歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux命令

Linux下 base64 命令工具的使用

Linux工具Linux命令 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 選項沒有輸出字符串結尾的'\n'換行字符,因此字符串"snailwarrior"精確的base64編碼是"c25haWx3YXJyaW9y",可以用PHP函數來檢驗哦。文件方式等進行的"snailwarrior"字符串編碼都帶入了對'\n'的編碼,因此,不小心就會發生莫名的編碼錯誤哦。

    4、Base64解碼
    [root@pps ~]# echo "snailwarrior" | base64 | base64 -d
    snailwarrior
    base64: invalid input
    [root@pps ~]# echo -n "snailwarrior" | base64 | base64 -d
    snailwarriorbase64: invalid input

    【注意】RHEL5自帶的base64工具有BUG,base64解碼時莫名出錯:base64: invalid input。我們可以在這裡下載一個base64源碼包自己編譯:
    http://www.fourmilab.ch/webtools/base64/base64-1.5.tar.gz

    我測試過沒問題:
    [root@pps base64-1.5]# echo "snailwarrior" | ./base64  | ./base64 -d
    snailwarrior
    [root@pps base64-1.5]# echo -n "snailwarrior" | ./base64  | ./base64 -d
    snailwarrior[root@pps base64-1.5]#

Copyright © Linux教程網 All Rights Reserved