Sun.misc.base64encoder to java.util.base64 Проблема миграцииJAVA

Программисты JAVA общаются здесь
Anonymous
Sun.misc.base64encoder to java.util.base64 Проблема миграции

Сообщение Anonymous »

Существует старый проект, который был записан в версии до Java 8. Мы мигрируем этот проект на Java 11. В старом проекте есть метод, который принимает переменную пароля и вмешатся в строку Base64 : < /p>

Код: Выделить всё

            String password = "123456";
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytes = decoder.decodeBuffer(password);
digest.update(bytes);
byte[] input = /* some digest operations here */
BASE64Encoder encoder = new BASE64Encoder();
String result = encoder.encode(input);
< /code>
, так как меня попросили скопировать этот код точно так же, как он есть, я передаю его в проект Java 11 без какого -либо рефакторинга, используя классы Java.util.base64, следующим образом: < /p>
            String password = "123456";
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
byte[] bytes = Base64.getDecoder().decode(password);
digest.update(bytes);
byte[] input = /* some digest operations here */
String result = Base64.getEncoder().encodeToString(input);
Проблема здесь заключается в следующем:
на старом проекте, массив байтов, сгенерированный decoder.decodebuffer (пароль);
Работа заключается в следующем: [-41, 109, -8, -25, -83, -8]. Base64.getDecoder (). Декод (пароль); операция следующая: [-41, 109, -8, -25].
Так, как вы видите, В то время как старая библиотека создает 6-значный массив, новая библиотека создает 4-значный массив. Хотя эти четыре цифры такие же, как и другие, пропали 2 байта. Это приводит к тому, что строка BASE64 в результате всех операций отличается в двух проектах. Как я могу решить это? Как я могу убедиться, что операция декодирования нового класса Base64 дала тот же результат, что и операция в старом классе? быть таким же, но не может добиться успеха.

Подробнее здесь: https://stackoverflow.com/questions/794 ... on-problem

Вернуться в «JAVA»