Еще не видел, чтобы кто-нибудь вызывал метод Base64.getMimeEncoder
в Java 8 - на самом деле он позволяет вам указывать длину строки и разделитель строк, например:
final Base64.Encoder encoder = Base64.getMimeEncoder(64, LINE_SEPARATOR.getBytes());
Я посмотрел, есть ли какая-нибудь разница с этим ^ по сравнению со стандартным кодировщиком, и я не смог ничего найти. javadoc цитирует RFC 2045 для кодеров BASIC и MIME, с добавлением RFC 4648 для BASIC. В AFAIK оба эти стандарта используют один и тот же алфавит Base64 (таблицы выглядят одинаково), поэтому вам следует использовать MIME, если вам нужно указать длину строки.
Это означает, что с Java 8 это может быть достигнуто с помощью:
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.util.Base64;
...
public static final String BEGIN_CERT = "-----BEGIN CERTIFICATE-----";
public static final String END_CERT = "-----END CERTIFICATE-----";
public final static String LINE_SEPARATOR = System.getProperty("line.separator");
...
public static String formatCrtFileContents(final Certificate certificate) throws CertificateEncodingException {
final Base64.Encoder encoder = Base64.getMimeEncoder(64, LINE_SEPARATOR.getBytes());
final byte[] rawCrtText = certificate.getEncoded();
final String encodedCertText = new String(encoder.encode(rawCrtText));
final String prettified_cert = BEGIN_CERT + LINE_SEPARATOR + encodedCertText + LINE_SEPARATOR + END_CERT;
return prettified_cert;
}