Я преобразовываю массив byte [] в строку. А затем преобразование строки обратно в массив byte []. Тогда на проверку, если оба массива равны - Я понимаю, что они не равны:
Строка в байт и наоборот в java
byte[] ciphertext2=c.doFinal(username.getBytes("utf-8"));
//JUST CHECKING IGNORE
String qaz=new String(ciphertext2,"utf-8");
//qaz=qaz+"1";
System.out.println("just chekcing------------------------"+qaz);
byte[] ciphertext3=qaz.getBytes("utf-8");
if(Arrays.equals(ciphertext2,ciphertext3))
{
System.out.println("just chekcing they are equal------------------------");
}
else
System.out.println("just chekcing they are not equal------------------------");<br>
ВЫВОД:
just chekcing they are not equal--------------------
Почему не работает?
Редактировать
Он отлично работает при использовании Base64 java. Но почему это не работает, если напрямую конвертировать байты в строку и наоборот? Что на самом деле происходит при преобразовании строки в массив байтов и наоборот?
Ваши байты, вероятно, недействительны utf-8. Когда они анализируются как строки utf-8, недопустимые последовательности превращаются в действительные последовательности utf-8, и поэтому массивы байтов различаются. Base64 гарантированно будет иметь значение utf-8 (это, в конце концов, надмножество ascii). – bdares
@bdares: как происходит преобразование байтового массива в строку? Что происходит внутри? – Ashwin
Я получаю это как истину, если я жестко кодирую значение для имени пользователя. – UVM