2012-03-11 11 views
0

私はbase64の初心者です。私はいくつかのテストをしました。私はいくつかのstrangesにこのベース64エンコーディングで正しい文字列はどれですか?

を見た私は、端末によって "グエン・トラン・ベトA" をエンコードする場合、それは生産:

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

しかし、私はいくつかのLIBS(のObjective-Cで)を走った、それが生産:

Tmd1eWVuIFRyYW4gVmlldCBB 

どちらが正しいですか?

ありがとうございました!

答えて

3

echoは、出力の最後にEOLを生成するため、OpenSSLでエンコードされます。 。echoコマンドはSTDOUT内の文字列の後に\nを追加するためです

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

ご了承いただきありがとうございます –

2

-nオプションを試してみてくださいそれを防ぐために。次の構文を使用します。

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

ご了承いただきありがとうございます –

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の例では、改行を持っていません。

base64 -D | od -c 
Tmd1eWVuIFRyYW4gVmlldCBB 

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

ませ終了改行:あなたは、おそらく生産

[@"Nguyen Tran Viet A" base64Encode] 

のような何かをしました。だから両方が正しい - あなたはわずかに異なるものを符号化しただけです。

+0

ありがとうございます –

関連する問題