Java Convert Asn.1 byte Array в удобной строке для браузера

Я пытаюсь преобразовать байтовый массив ASN.1 в строку с Java. Мои результаты до сих пор:

byte[] asn = ocspResponse.getEncoded();
String liccert = new String(asn, "Cp850");

Эта строка содержит некоторые строковые артефакты, которые очень беспокоят:

Как это:

4¦20110416173611Z0üÏ0üi0:0  

Есть ли способ преобразовать байтовый массив следующим образом:

RFMRIwEAYDVQQIEwlsb2NhbGhvc3QxFDASBgNV?

1 ответ

Решение

Вы абсолютно не должны преобразовывать произвольные двоичные данные в строку, используя конструктор String. Этот конструктор предназначен для получения двоичных данных, которые на самом деле представляют собой закодированный текст, и построения строки из него. Ваши данные на самом деле не являются закодированным текстом - это просто произвольные двоичные данные. Притворение, что это был первоначально текст, является рецептом для потери данных.

Наилучшим подходом обычно является кодирование Base64. Для этого существует множество сторонних библиотек, в том числе Apache Commons Codec или кодировщик общественного достояния.

Например, используя последний:

String liccert = Base64.encodeBytes(asn);
Другие вопросы по тегам