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

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

Сообщение Anonymous »

Существует старый проект, который был написан в версии до Java 8. < /p>
Мы мигрируем этот проект на 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);
, поскольку меня попросили скопировать этот код точно так же, как он есть, я передаю его в проект 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] < /code>.
Но в новом проекте, байтовой массив, сгенерированный Base64.getDecoder (). Decode (пароль); операция следующая: [-41, 109, -8, -25] .
Таким образом, как Вы можете увидеть, в то время как старая библиотека создает 6-значный массив, новая библиотека создает 4-значный массив. Тем не менее, эти четыре цифры такие же, как и другие, 2 байта отсутствуют. Это приводит к тому, что строка Base64, возникающие в результате того, что все операции отличаются в двух проектах. < /P>
Как я могу это решить? Как я могу убедиться, что операция декодирования нового класса Base64 дала тот же результат, что и операция в старом классе? быть таким же, но не может добиться успеха.

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

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