2012-03-11 64 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

相关问题