2011-03-21 57 views
0

我有一個函數,返回我的字符串:的java連接兩個字符串錯誤

public String getString(String password){ 

      ...... 

    try { 
    ....... 
     encodedPassword = Base64.encodeToString(msgDigest,1); 

    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (NoSuchAlgorithmException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return encodedPassword; 

    } 

我想補充(連擊)「=」字符串從函數返回字符串

我嘗試使用這樣的:

encrptdPassword = getString("1234"); 
encrptdPassword = encrptdPassword+"="; 

或者:

encrptdPassword = encrptdPassword .concat("="); 

但我得到類似結果兩個不同對象(間距或制動)

我認爲問題出在Base64.encodeToString,但我必須使用64基於字符串


功能getString返回我:

A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ 

我想補充=到返回字符串:

A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ= 

但我收到此輸出

A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ = 

或者:

A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ 
= 

...像2個不同的字符串。

我在哪裏錯了?

+1

請發表您的輸入和錯誤結果的例子。否則不清楚是什麼問題 – Yoni 2011-03-21 18:59:58

+1

我不明白。請完全粘貼*你得到的輸出和*完全*你期望的輸出。 – 2011-03-21 19:00:38

+0

這是Android嗎?如果你指出或者你使用Base64類的庫,你會得到更好的答案。 – 2011-03-22 18:46:43

回答

0

是不是Base64.encodeToString(msgDigest,1)padding中的1?

如果不是,那麼你可以修剪()字符串以刪除空格。

+0

trim()的工作。非常感謝! – Jovan 2011-03-21 19:16:16

+1

@Jovan,也許修剪工作,但我不會依賴它。如果在連接之前有空格或回車符,我想理解爲什麼。你使用的是什麼base64實現? – Yoni 2011-03-21 20:11:30

1

我假設你使用Apache Commons Codec中的Base64。

該類的默認構造函數使用「\ r \ n」作爲行分隔符,它將其添加到每個編碼行的末尾。如果你不希望這樣,構造對象爲:

new Base64(76, ''); 

如果這不是你調用類(它看起來像從您的代碼示例你調用一個靜態方法),檢查API並查看是否可以爲轉換設置行分隔符。

+0

你可以請我發佈代碼嗎? msgDigest是字節數組(字節[]) – Jovan 2011-03-21 19:11:36