Я застрял при создании менеджера лицензий для приложения Android, где лицензионный ключ генерируется на настольном сервере, а код проверки запускается на устройствах Android. Код проверки при выполнении на рабочем столе дает желаемые результаты, но тот же код дает другой результат на Android.
Я отладил проблему и дошел до того, что результаты были получены!
Вот фрагмент кода, демонстрирующий разницу:
byte[] bytes = {-88, 50, -29, 114, 51, 88, 38, -52, 114, 91, -23, -55, 124, 37, -90, -49, 36, -110, -67, -59, -33, -75, 85, -72, -109, 25, -54, 89, 6, 35, -50, -11, -87, -22, 33, -2, 55, -30, 75, -36, -40, -29, -103, 110, 46, -100, -68, 101, -105, 62, 53, -20, -20, -21, -118, -72, -27, 32, 59, 127, 15, -117, 6, 102};
System.out.println(new String(bytes, "UTF-8").hashCode());
на oracle jdk результат получается
-24892055
но на андроид телефоне результат:
-186036018
Любая помощь будет оценена.