我正在一个项目中,我必须从PHP服务器解密一个xml文本并解析成java,我已经使用CipherInputStream解密了xml文本,并看到xml文件完全打印,但我面临的一个奇怪的问题,而试图存储在一个java字符串中的XML文本,我工作的代码如下:问题与java字符串和字符串生成器
public String decrypt(InputStream Fis){
Cipher c = Cipher.getInstance(algo + "/CBC/NoPadding");
String add = "";
StringBuilder getAns = new StringBuilder();
c.init(Cipher.DECRYPT_MODE, key);
CipherInputStream cis = new CipherInputStream(Fis , c);
byte[] encData = new byte[16];
int dummy;
while ((dummy = cis.read(encData)) != -1)
{
System.out.println(new String(encData, "UTF-8").trim());
add = (new String(encData, "UTF-8").trim());
getAns.append(add);
}
System.out.println(getAns);
...
}
它通过第一的println打印日志猫完整的XML文本while循环内的语句,但是当打印StringBuilder getAns
时,它只打印一部分文本。
我也试着只用字符串:
add = add + (new String(encData, "UTF-8").trim());
也使用ArrayList<String>
但它只能打印文本的一部分。
我想这可能是由于一个愚蠢的错误,但我正在努力与此。任何帮助将不胜感激。
如果您发布预期的和实际的输出,特别是'getAns'输入停止处的文本,这将会很有帮助。请注意,'add'的内容不包含换行符,它由'println'附加。 – chrylis
@chrylis但抱歉,我无法发布这些代码,这就是为什么我正在加密和解密文本。 –
您是否尝试删除打印语句并查看StringBuilder是否工作?尝试调试并查看添加String的内容。 – dARKpRINCE