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);