起因是这样的,需要做一个加解密的小功能,加密时候传入字符串再返回加密后的字符串,解密时候把加密后的字符串解密返回
public String decrypt(String encValue) {
byte[] oriValueByte = oriValue.getBytes();
byte[] encData = 加密后的byte[];
returnStr = new String(encData); //加密后的字符串
System.out.println("加密返回的二进制数组22222 = " + Arrays.toString(encData));
return returnStr ;
}
然后把加密后的字符串原样传回去解密
public String decrypt(String encValue) {
byte[] encValueByte = encValue.getBytes();
System.out.println("解密传入的参数的二进制数组22222 = " + Arrays.toString(encValueByte));
byte[] decData = 解密后的byte[]
returnStr = new String(decData); //解密后的字符串
return returnStr ;
}
奇怪的地方在于
我以为是getbyte[]的问题,又做了个测试
String idNumber = "142723199908162111";
byte[] testByte = idNumber.getBytes();
System.out.println("idNumber = " + idNumber);
System.out.println("testByte = " + testByte);
System.out.println("Arrays.toString = " + Arrays.toString(testByte));
String kk = new String(testByte);
System.out.println("kk = " + kk);
byte[] testByte2 = kk.getBytes();
System.out.println("testByte2 = " + testByte2);
System.out.println("Arrays.toString2 = " + Arrays.toString(testByte2));
其实返回值是正确的
那么上面的代码问题在哪里呢?为什么同一个字符串返回的二进制数组不同?或者是因为两个字符串看起来一样,其实不一样?