我正在一個項目中,我必須從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