为什么以下测试失败?使用JAVA将AES对称密钥作为字符串传递
KeyGenerator generator = KeyGenerator.getInstance("AES");
SecretKey key = generator.generateKey();
byte[] symKey = key.getEncoded();
String keyAsString = new String(symKey, Charset.forName("UTF-8"));
byte[] supposedSymKey = keyAsString.getBytes(Charset.forName("UTF-8"));
Assert.assertEquals(symKey.length, supposedSymKey.length);
而且supposedSymKey和symKey内容有什么不同? 什么是正确的方式将symKey转换为字符串,以便我可以分发它? 谢谢。
的关键不是UTF默认编码,该supposedSymKey的字节数是不一样的,我会说,来表示它的最简单的方式串是六角形串。看看这里:http://stackoverflow.com/questions/9655181/convert-from-byte-array-to-hex-string-in-java – MByD