2010-01-23 66 views
4

真的很困惑 - 猜猜它與最後的單個字符放置有關,還是可能使用基本摘要完成的填充,我不知道..?爲什麼命令行計算的base64字符串與curl計算的base64字符串不同?

所以,如果我執行此,你可以看到使用Base64編碼的產品:

echo '[email protected]:password' | openssl enc -base64 
aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo= 

現在,如果我做一個捲曲的請求:

curl -v -u [email protected]:password https:// 
aG9zdEBtYWlsLmNvbTpwYXNzd29yZA== 

你會發現, base64字符串是不一樣的..哈哈是什麼? base64命令行實際上是不正確的 - 如果在請求中替換它,它會失敗。所以 - 做基本的摘要不是真正使用base64字符串?我注意到,總是在字符串的末尾做一個o =而不是== ...

和想法?

編輯:因此,它是從回聲其後的換行符: -n不輸出其後的換行符

謝謝!

回答

7
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA=='.decode('base64') 
'[email protected]:password' 
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo='.decode('base64') 
'[email protected]:password\n' 

嘗試用echo -n代替。

+0

echo -n「[email protected]:password」| openssl enc -base64 aG9zdEBtYWlsLmNvbTpwYXNzd29yZA == ...似乎沒有工作。 – 2010-01-23 04:29:17

+0

>>>'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA =='。decode('base64')\'[email protected]:password'...對我來說看起來不錯... – 2010-01-23 04:32:07

+0

DOH - 對不起 - 正在比較它與真實用戶:pass 。嘿,很好,謝謝! – 2010-01-23 04:34:39