Java Convert Asn.1 byte Array в удобной строке для браузера - PullRequest
0 голосов
/ 16 апреля 2011

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

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

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

Как это:

4¦20110416173611Z0üÏ0üi0:0  

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

RFMRIwEAYDVQQIEwlsb2NhbGhvc3QxFDASBgNV?

1 Ответ

3 голосов
/ 16 апреля 2011

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

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

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

String liccert = Base64.encodeBytes(asn);
...