2012-11-23 211 views
2

我使用Android javax API來加密字符串,該字符串返回一個字節數組,然後再次轉換爲字符串(目的是爲了稍後寫入文本文件)。將字節數組轉換爲字符串,反之亦然

現在使用這個字符串,我轉換爲字節數組來解密,返回另一個字節數組,我再次轉換爲字符串。

我無法得到這個工作。我縮小了問題的範圍,將字符串轉換爲字節數組部分。因爲如果我使用加密的字節數組來解密,然後得到它的字符串它的工作。

不知道是什麼問題。我使用了以下的轉換:

String str; 
Byte [] theByteArray = str.getBytes("UTF-8"); 
String val = new String (theByteArray , "UTF-8"); 

and 

Byte [] theByteArray = str.getBytes(); 
String val = new String (theByteArray); 

什麼是從字節數組轉換爲字符串,反之亦然,而不會丟失任何東西的最佳方式是什麼?

在此先感謝

+0

[如何轉換字節的可能的複製數組到字符串,反之亦然](http://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa) – lxknvlk

回答

3

您可以使用Apache庫的Hex類。它提供decodeencode函數。

String s = "42Gears Mobility Systems"; 
byte[] bytes = Hex.decodeHex(s.toCharArray()); 

String s2 = new String(Hex.encodeHex(bytes)); 
0

如果你真的需要另一種方式來存儲字節數組字符串,反之亦然,最好的辦法是使用Base64 encoding,這樣你就不會丟失任何數據。這裏是link,你可以下載郵編。提取壓縮文件並在項目中包含類文件。然後在需要編碼和解碼的地方使用以下代碼片段。

//爲了編碼數據並將其轉換成一個字符串

ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
bitMap.compress(Bitmap.CompressFormat.JPEG, 90, bao); 
    byte [] ba = bao.toByteArray(); 
    String ba1=Base64.encodeBytes(ba); 

//爲了解碼數據轉換成字節數組再次

try{ 
      byte[] ba3 = Base64.decode(ba1); 

    }catch(Exception e) 
      { 

      } 
+0

嗨,我試過Base64但是當我正在閱讀Base64 enco ded字符串從一個文本文件解碼,這是顯示我的基地64錯誤。任何想法有什麼不對? – aandroidtest

+0

@aandroidtest你可能在某處出錯了。如果可能的話,粘貼你的代碼,特別是你正在應用這種機制和logcat的代碼片段。除非它很難回答.. – Kanth

相關問題