Поскольку ваш код написан выше, печатая aesKey
, а затем b
, вы фактически печатаете вывод метода toString
для объекта массива, который является просто методом Object toString
по умолчанию.Поэтому я не понимаю, как вы можете ожидать, что они будут одинаковыми.
Если вы действительно хотите проверить, что они одинаковы, вы должны сравнить их побайтно.
С точки зрения вашегоНа самом деле вопрос о сохранении байта [] в виде строки в БД, лучше всего его кодировать в Base64.Для этого я бы предложил использовать библиотеку кодеков Apache Commons.См. руководство пользователя .
РЕДАКТИРОВАНИЕ:
Используя BASE64Encode и BASE64Decoder, на которые вы ссылались, код будет выглядеть так:
SecureRandom ranGen = new SecureRandom();
byte[] aesKey = new byte[16]; // 16 bytes = 128 bits
ranGen.nextBytes(aesKey);
String a = new BASE64Encoder().encode(aesKey);
System.out.println(a);
byte[] b = new BASE64Decoder().decodeBuffer(a);
System.out.println(new BASE64Encoder().encode(b));
for (int i = 0; i < aesKey.length; i++) {
System.out.println(aesKey[i] + " " + b[i]);
}
Здесь я также просмотрел байты по отдельности, чтобы показать, что они действительно равны.