Декодирование Base64, вывод неправильный с использованием UTF-8, UTF-16 - PullRequest
0 голосов
/ 24 декабря 2018

Я построил локальный сервер restAPI на моем компьютере, и у меня есть функция регистрации, отправляющая пользовательские данные в базу данных mySQL.

Я закодировал строку пароля в строку base64 (хотел попытаться зашифровать мойсамостоятельно).Когда я пытаюсь декодировать пароль, который я получаю из БД, я получаю неправильный вывод.

Например, пароль (base64): MDQ1MTA0NTE =

, который будет выводить - 04510451

Класс декодера -

byte[] decodedValue = Base64.getDecoder().decode(password);  


return new String(decodedValue, StandardCharsets.UTF_8);

Класс кодера -

byte[] passEncoded = Base64.getEncoder().encode(password.getBytes("UTF-8"));
System.out.println("encoded value is " + new String(passEncoded));
String finalPass = null;
finalPass = new String(passEncoded, "UTF-8");

return finalPass;

Теперь фактический вывод, который я получаю: "ӎuӎu" (должен быть 04510451)

Спасибо зазаранее, Джонатан

1 Ответ

0 голосов
/ 24 декабря 2018

Похоже, вы декодируете дважды.Это не видно в предоставленных вами фрагментах кода, но будет наиболее логичным объяснением:

MDQ1MTA0NTE= -> 04510451 -> ӎuӎu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...