3

我正在使用 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);

从字节数组转换为字符串的最佳方法是什么,反之亦然而不会丢失任何东西?

4

2 回答 2

3

您可以使用 apache 库的Hex类。它提供解码编码功能。

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

String s2 = new String(Hex.encodeHex(bytes));
于 2012-11-23T03:51:28.700 回答
0

如果您确实需要另一种方法将字节数组存储为字符串,反之亦然,最好的方法是使用Base64 编码,这样您就不会丢失任何数据。这是您可以下载 zip的链接。提取 zip 并将类文件包含在您的项目中。然后在需要编码和解码的任何地方使用以下代码片段。

//对数据进行编码并转换为字符串

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)
            {

            }
于 2012-11-23T04:07:42.643 回答