【发布时间】:2016-09-25 22:00:15
【问题描述】:
我正在生成一个会话密钥,每次运行程序时都会更改。 但是当我将它转换为字节数组时,每次运行程序时生成的字节数组都是相同的。 IT应该不一样吧? 这是我的代码
Key key;
SecureRandom rand = new SecureRandom();
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(rand);
generator.init(256);
key = generator.generateKey();
String key1=key.toString();
byte[] genratesessionKey1 = key1.getBytes();
System.out.println("SESSION KEY IS(Byte format) "+genratesessionKey1.toString());
然后我还使用了一个虚拟字符串。然后我生成了它的字节[]。然后我更改了该字符串中的值并再次生成了它的 Byte[]。它仍然返回相同的结果。
String test2="yadav";
String key1=key.toString();
byte[] genratesessionKey1 = key1.getBytes();
byte[] g2=test.getBytes("UTF-8");
byte[] g3=test.getBytes();
System.out.println("Session key in String "+key1);
System.out.println("Testing Byte Format "+g2);
System.out.println("Testing Byte Format 2 "+g3);
为什么会这样。任何建议将不胜感激
【问题讨论】:
-
你能给我们完整的代码吗?我看不到测试来自哪里
-
请提供该问题的完整最小示例。您提供的代码几乎是一个工作示例,但不完全是。我假设对
test的引用应该是test2("yadav"),并且代码按我预期的那样运行——也就是说,不是你所描述的。所以请提供一个工作示例。 -
您知道字节数组上的
toString()实际上并没有打印出字节内容,对吧?那么,您在查看什么来确定字节数组始终相同?请发布您的输出。 -
是的 IN String test2="yadav";当我将其更改为 String test2="yadav1234";
-
它仍然为两个字符串返回相同的字节 [] .. 应该不同吧?
标签: java bytearray public-key-encryption session-keys