2011-03-21 53 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