我整天都在寻找答案,所以终于写到这里了。 我用 class crypto 加密一个字符串,得到一个 byte[]。 我必须用 tostring() 将这个字节转换为字符串,以便在一个网络中上传。 我需要得到这个字符串,解密并得到原始字符串。 我的问题是关于 getBytes,它不会返回相同的字节 [] 来解密。
我需要将原始字符串转换为 byte[],加密,获取返回的 byte[],转换为字符串,然后将此字符串转换为 byte[] 并加密相同的 byte[]。
我尽我所能。 我需要一些方法,用一个字符串,总是返回相同的 byte[] 而 getbytes 不会这样做。
我加一个例子:
String s2="this is an example";
byte[] b1=s2.getBytes("UTF-8");
byte[] b2=s2.getBytes("UTF-8");
System.out.println("Byte s:"+b1);
System.out.println("Byte s:"+b2);
有一种方法可以从一个字符串给出相同的byte[]? 使用 getBytes(至少对我而言)我获得了两个不同的 byte[]。 谢谢。
最佳答案
你误解了下面这行
System.out.println("Byte s:"+b1);
这里我们在字节数组上隐式调用 toString()
方法。这不返回数组的内容。而是使用:
System.out.println("Byte s:" + java.util.Arrays.toString(b1));
这将向您显示可用于比较的字节数组的内容。
您可以使用 String.getBytes(String)
方法。它返回两个不同的字节数组实例,但它们具有相同的内容。
@Test
public void testGetBytes() throws Exception {
String s2 = "this is an example";
byte[] b1 = s2.getBytes("UTF-8");
byte[] b2 = s2.getBytes("UTF-8");
Assert.assertEquals(b1, b2);
}
关于java - 方法字符串到字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140010/