【发布时间】:2011-11-16 07:54:54
【问题描述】:
我整天都在寻找答案,所以最后我写在这里。 我用加密类加密一个字符串,得到一个字节[]。 我必须用 tostring() 将这个字节转换成字符串,才能上传到一个网络中。 我需要得到这个字符串,解密并得到原始字符串。 我的问题是关于 getBytes,它不会返回相同的 byte[] 来解密。
我需要将原始字符串转换为 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);
有一种方法可以从一个字符串中给出相同的字节[]? 使用 getBytes(至少在我看来)我获得了两个不同的字节 []。 谢谢。
【问题讨论】:
-
抱歉,您的问题很难理解,可能是因为英语不是您的母语。你能发布一些代码来显示你在做什么以及你得到的不是你想要的吗?
-
从 byte[] 解码到 String 时使用什么字符集,从 String 编码到 byte[] 时使用什么字符集?您必须对两者使用相同的字符集,否则您可能无法获得原始字节 []。
-
这不是我的母语,抱歉。我发布了一个关于我的问题的例子。如果我这样写: String s="this is an example";字节[] b1=s.getBytes("UTF-8");字节[] b2=s.getBytes("UTF-8"); System.out.println("字节数:"+b1); System.out.println("字节数:"+b2);我获得了两个不同的字节。我需要一个字符串,我需要一个字节[],一个对称关系字节[]-->字符串-->字节[],两个字节都相等。我尝试了所有的字符集,默认值,UTF-8 ......我很关心编码和解码。谢谢你们。
-
@Jmm:在您的示例中,您将打印出在这种情况下不同的两个字节数组的地址。如果要检查内容是否相等,请使用
Arrays.equals(b1, b2)。回归是真的吗?它应该用于相同的字符串和编码。 -
您需要更多帮助来解决此问题吗?如果需要,请询问更多信息。