es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Añadiendo encabezado/pie de página a una cadena codificada en base64.

Entonces, tengo un X509Certificate que codifico de la siguiente manera:

String base64 = Base64.getEncoder().encodeToString(certificate.getEncoded());

Pero esto devuelve una cadena que se ve así (MII….)
Por eso creo que cuando ejecuto esta parte:

PEMParser reader= new PEMParser (new StringReader(new String(Base64.getDecoder().decode(base64))));
PemObject object = reader.readPemObject();

El objeto es igual a null.
Creo que esto se debe a que la cadena codificada en base64 no contiene la cabecera/pie -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----.

¿Alguna idea de cómo puedo solucionar esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, tienes razón. El método Base64.getEncoder().encodeToString() solo codifica los datos binarios y no agrega el encabezado y pie de certificado. Para solucionarlo, puedes agregar el encabezado y el pie antes de codificar a base64.

    Aquí tienes un ejemplo de cómo hacerlo:

    String certHeader = "-----BEGIN CERTIFICATE-----\n";
    String certFooter = "\n-----END CERTIFICATE-----";
    String certContent = certHeader + new String(Base64.getMimeEncoder().encode(certificate.getEncoded())) + certFooter;
    

    Esto codificará el certificado a base64 y agregará el encabezado y el pie. La salida estará en formato PEM, que luego se puede analizar usando la clase PEMParser.

    PEMParser reader = new PEMParser(new StringReader(certContent));
    PemObject object = reader.readPemObject();
    

    Esto debería devolver ahora un objeto PemObject no nulo que contiene los datos del certificado.

Comments are closed.