byte []到String和String到byte []

Jav*_*oid 0 java arrays string byte casting

我有一个小问题,从更改类型byte[]String,然后从Stringbyte[].当我使用我的代码时,它返回RSA错误"rsa块的数据太多".但是当我使用原版时byte[],它工作正常.

这是它的工作原理:

cipherData = cipher.doFinal(cipherData);
Run Code Online (Sandbox Code Playgroud)

我试图更改数据类型:

// Byte[] to String
String encrypted = new String(cipherData, "UTF-8");
// RSA Operation
cipherData = cipher.doFinal(encrypted.getBytes());
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

这就是问题:

String encrypted = new String(cipherData, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

cipherData 不是 UTF-8编码的文本.这是任意的二进制数据.所以,不要试图解释它,就好像它 UTF-8文本.

相反,使用hex或base64 - 其中base64可能是最简单的方法.我喜欢公共领域的iHarder base64库:

String encrypted = Base64.encodeBytes(cipherData);
...

cipherData = Base64.decode(encrypted);
Run Code Online (Sandbox Code Playgroud)

编辑:如果您当然使用Android,那么使用内置库 :)