2012-03-11 24 views
0

我是base64的新手。我做了一些測試。我看到一些似有哪個字符串在這個base 64編碼中是正確的?

當我編碼 「阮陳越A」 的終端,它產生:

vietiPhone:~ vietnt$ echo "Nguyen Tran Viet A" | openssl enc -base64 
Tmd1eWVuIFRyYW4gVmlldCBBCg== 

但後來我進行了一些庫(在Objective-C),它產生:

Tmd1eWVuIFRyYW4gVmlldCBB 

這是對的嗎?

謝謝!

回答

3

echo在輸出結束時會產生EOL,所以它會被OpenSSL編碼。嘗試-n選項:

$ echo -n "Nguyen Tran Viet A" | openssl enc -base64 
Tmd1eWVuIFRyYW4gVmlldCBB 
+0

感謝您的支持 – 2012-03-12 03:15:26

2

這是因爲echo命令STDOUT字符串後追加一個\n。爲了防止它。使用以下語法:

echo -n "Nguyen Tran Viet A" | openssl enc -base64 
+0

感謝您的支持 – 2012-03-12 03:15:15

2

區別在於行尾字符。當您使用「回聲」時,它會輸出換行符:

base64 -D | od -c 
Tmd1eWVuIFRyYW4gVmlldCBBCg== 

0000000 N g u y e n  T r a n  V i e t 
0000020  A \n              
0000023 

該ObjC示例沒有換行符。你可能不喜歡的東西

[@"Nguyen Tran Viet A" base64Encode] 

主要生產:

base64 -D | od -c 
Tmd1eWVuIFRyYW4gVmlldCBB 

0000000 N g u y e n  T r a n  V i e t 
0000020  A               
0000022 

沒有結束換行符。所以他們都是正確的 - 你只是編碼稍微不同的東西。

+0

感謝您的解釋 – 2012-03-12 03:15:06

相關問題