it-swarm.com.ru

Преобразование байтового массива в строку base64 Java

Попытка преобразовать byte[] в строку base64, используя org.Apache.commons.codec.binary.Base64 .. Для этого мой код Java выглядит следующим образом:

 base64String = Base64.encodeBase64URLSafeString(myByteArray);

Но я вижу недопустимые символы в сгенерированной строке base64.ScreenShot

Почему я вижу эти строки ____ в моей сгенерированной строке base64? Это допустимая строка? Обратите внимание, что длина сгенерированной строки делится на четыре.

8
Suave Nti

вы пытались использовать метод encodeBase64String вместо encodeBase64URLSafeString

encodeBase64URLSafeString:

Кодирует двоичные данные, используя URL-безопасный вариант алгоритма base64 но не разделяет вывод. Вариант, безопасный для URL, выделяет - и _ вместо символов + и /.

encodeBase64String:

Кодирует двоичные данные, используя алгоритм base64, но не разбивает на части выход. ПРИМЕЧАНИЕ. Мы изменили поведение этого метода с многострочного разделение (commons-codec-1.4) на однострочное не разделение (Обыкновенные-кодек-1,5).

источник: org.Apache.commons.codec.binary.Base64 javadoc

2
Jean-Philippe Caruana

Использование 

String sCert = javax.xml.bind.DatatypeConverter.printBase64Binary(pk); 
1
Taran

Это может быть полезно

Sun.misc.BASE64Encoder encoder = new Sun.misc.BASE64Encoder();
encoder.encode(byteArray);
1
Koti

у вас есть (по крайней мере) два варианта base64, оригинальный с использованием «+» и «/» в дополнение к буквенно-цифровым символам, и «безопасный URL» с использованием «-» и «_», чтобы содержимое может быть заключен в URL (или используется в качестве имени файла, кстати).

Похоже, вы используете кодировщик base64, который был переведен в «безопасный для URL режим».

Javadoc Apache для URLSafeString ()

Да, и '_' является последним символом алфавита base64, просмотр строк "____" означает, что вы кодировали куски 0xffffff ..., точно так же, как просмотр "AAAAAA" означает, что есть много последовательных нулей. 

Если вы хотите убедиться, что это нормальный случай, просто выберите ваш любимый шестнадцатеричный дампер/редактор и проверьте, как выглядел ваш двоичный ввод.

0
PypeBros