Codificaci贸n y decodificaci贸n de cadenas Base64 en Java

    Introducci贸n

    El proceso de convertir datos mediante la aplicaci贸n de algunas t茅cnicas / reglas a un nuevo formato se denomina codificaci贸n. La decodificaci贸n es el proceso inverso de la codificaci贸n: devolver los datos codificados al formato original.

    La codificaci贸n nos rodea y las computadoras dependen en gran medida de diferentes formatos de codificaci贸n para entregar y transferir informaci贸n.

    Desde la 煤ltima imagen de un gato en su feed hasta el mensaje de voz que escuch贸 en una aplicaci贸n de mensajer铆a, todos estos se codificaron en el lado del remitente, se le entregaron y decodificaron en el lado del destinatario.

    La codificaci贸n asegura que los datos permanezcan intactos y sean eficientes para el transporte.

    驴Qu茅 es Base64?

    Base64 es un esquema de codificaci贸n de binario a texto. Se representa como caracteres ASCII imprimibles donde cada car谩cter Base64 contiene 6 bits de informaci贸n binaria.

    Es muy 煤til para almacenar informaci贸n de imagen / audio en cadenas de informaci贸n. Lo que Base64 no es es un algoritmo de cifrado.

    Si bien “oscurece” los datos hasta cierto punto, no es un formato seguro de ninguna manera.

    驴C贸mo funciona Base64?

    En Base64, como sugiere el nombre, se utilizan 64 caracteres para codificar datos binarios. Estos personajes son:

    • 26 letras may煤sculas [A-Z]
    • 26 letras min煤sculas [a-z]
    • 10 d铆gitos [0-9]
    • 2 caracteres especiales [+ , /]

    Nota: Tambi茅n hay un car谩cter 65 (=), que tiene un significado especial y se llama car谩cter de relleno.

    Como es habitual, cuando se trata de computadoras, los n煤meros se representan en potencias de 2. Por lo tanto, 64 caracteres de Base64 se pueden escribir como:
    $$
    64 = 2 ^ 6
    $$
    Cada car谩cter est谩 representado en 6 bits. Podr铆a ir m谩s alto que esto y hacer que cada car谩cter represente 8 bits. Eso ser铆a Base256. Sin embargo, esto no es pr谩ctico debido a las dificultades en el proceso de codificaci贸n / decodificaci贸n.

    Sigamos adelante y codifiquemos manualmente una cadena simple para tener una buena idea de c贸mo funciona el proceso.

    Codificaci贸n manual

    Por ejemplo, digamos que tenemos un String – ABC123 que nos gustar铆a codificar en Base64. Hay cinco pasos que tomamos durante este proceso:

    • Tome los valores ASCII de los caracteres de entrada por separado:
    PersonajeUNsegundoC123
    ASCII (decimal)sesenta y cinco6667495051
    • Convierta el valor decimal de cada car谩cter en un binario de 8 bits:
    PersonajeUNsegundoC123
    ASCIIsesenta y cinco6667495051
    Binario010000010100001001000011001100010011001000110011
    • Reorganice los n煤meros binarios en trozos de 6 bits:

      010000 010100 001001 000011 001100 010011 001000 110011

      Si es imposible dividirlo en partes de seis, tenemos que almohadilla la secuencia.

    • Obtenga los valores decimales de estos fragmentos binarios:
    Binario010000010100001001000011001100010011001000110011
    Decimaldiecis茅is20931219851
    • Finalmente, usando el gr谩fico Base64, convierta cada n煤mero decimal en un car谩cter Base64:
    ValorCarbonizarseValorCarbonizarseValorCarbonizarseValorCarbonizarse
    0UNdiecis茅isQ32gramo48w
    1segundo17R33h49X
    2C18S34yo50y
    3re19T35j51z
    4mi20U36k520
    5F21V37l531
    6GRAMO22W38metro542
    7H23X39norte553
    8yo24Y40o564
    9J25Z41pags575
    10K26un42q586
    11L27segundo43r597
    12METRO28C44s608
    13norte29re45t619
    14O30mi46tu62+
    15PAGS31F47v63/

    Al final, nos quedamos con la String QUJDMTIz – la representaci贸n Base64 de ABC123.

    Nota: Se codifican 6 caracteres de entrada en 8 caracteres al final. Esto significa que se necesita ~ 33% m谩s de espacio para almacenar una cadena codificada en Base64 en lugar de la cadena original.

    驴Por qu茅 utilizar la codificaci贸n Base64?

    Las computadoras funcionan con 0sy 1s, entonces, 驴por qu茅 molestarse en convertir esto a otro formato?

    Si verdad. El binario es el lenguaje de las computadoras. Es exactamente por eso que lo estamos convirtiendo. Una secuencia como 0010110 puede significar muchas cosas. Puede ser parte de una imagen, puede ser parte de un archivo de audio o puede ser un comando que borre la mitad de su disco duro.

    Estos datos deben procesarse de manera diferente, dependiendo de lo que se supone que representan. Adem谩s, muchos servidores no esperan datos binarios sin procesar. Los servidores de correo electr贸nico, por ejemplo, esperan datos textuales. Todos los correos electr贸nicos est谩n codificados antes de que las aplicaciones los env铆en.

    Codificaci贸n de cadenas con Java 8 – Base64

    Java 8 nos present贸 una nueva clase: Base64. Admite la codificaci贸n y decodificaci贸n de algunos tipos de variantes de datos seg煤n lo especificado por RFC 2045 y RFC 4648:

    • B谩sico
    • URL y nombre de archivo seguros
    • M脥MICA

    Codificaci贸n y decodificaci贸n b谩sica de cadenas

    Usando el codificador base, podemos codificar una cadena en Base64. El codificador base no agrega un car谩cter separador de l铆nea.

    Si la longitud de la cadena no es divisible por 3 (la representaci贸n de 8 bits no podr谩 agruparse en grupos de 6 bits), el relleno se agregar谩 en forma de = al final:

    Encoder encoder = Base64.getEncoder();
    String originalString = "basic";
    String encodedString = encoder.encodeToString(originalString.getBytes());
    
    System.out.println(encodedString);
    

    los Base64 es una clase de f谩brica de la que recuperaremos diferentes implementaciones / variaciones del codificador. los encodeToString() El m茅todo codificar谩 nuestra entrada en una representaci贸n Base64 de la entrada y la empaquetar谩 en un String. Tambi茅n puede utilizar el encode() m茅todo para codificarlo en un byte corriente o un ByteBuffer en lugar.

    Si es necesario, tambi茅n puede devolver una instancia de codificador que no rellene las cadenas de entrada a trav茅s del withoutPadding() m茅todo mientras lo instancia desde la clase de f谩brica:

    Base64.getEncoder().withoutPadding();
    

    Nota: La codificaci贸n sin relleno probablemente dar谩 como resultado una cadena Base64 que no se puede volver a decodificar ya que se pierde una parte de la informaci贸n.

    Ejecutar el ejemplo de c贸digo producir谩:

    YmFzaWM=
    

    Con nuestra cadena codificada, tambi茅n creemos una instancia Decoder y decodificar la cadena producida. Sin embargo, los decodificadores solo funcionan con byte matrices:

    Decoder decoder = Base64.getDecoder();
    byte[] bytes = decoder.decode(encodedString);
    		
    System.out.println(new String(bytes));
    

    Este c贸digo resultar谩 en:

    basic
    

    Codificaci贸n y decodificaci贸n de URL

    Para codificar y decodificar URL, podemos usar una instancia de Encoder y Decoder que utilizan el tipo seguro de URL y nombre de archivo de Base64. Tampoco a帽aden un car谩cter separador de l铆nea.

    Los obtenemos a trav茅s del getUrlEncoder() y getUrlDecoder() m茅todos a trav茅s del Base64 f谩brica:

    Encoder encoder = Base64.getUrlEncoder();
    String originalinput = "https://Pharos.sh.com/tag/java/";
    String encodedUrl = encoder.encodeToString(originalinput.getBytes());
    
    System.out.println(encodedUrl);
    

    Al igual que antes, el encodeToString() El m茅todo codificar谩 la entrada y la empaquetar谩 en una Cadena:

    aHR0cHM6Ly9zdGFja2FidXNlLmNvbS90YWcvamF2YS8=
    

    los encode() El m茅todo codificar铆a la entrada en un byte formaci贸n. De nuevo, el decode() El m茅todo funciona con un byte array y decodifica la Cadena Base64 en la original:

    Decoder decoder = Base64.getUrlDecoder();
    byte[] bytes = decoder.decode(encodedUrl);
    
    System.out.println(new String(bytes));
    

    Ejecutar este c贸digo produce:

    https://Pharos.sh.com/tag/java/
    

    Nota: Tres caracteres especiales est谩n disponibles en este esquema: +, /, =. Estos caracteres pueden tener un significado diferente en las URL y ciertos sistemas de archivos y podr铆an causar un problema si se utiliza la cadena codificada. Para asegurarnos de evitar estos problemas, las URL y las cadenas de archivos deben codificarse y decodificarse mediante el decodificador seguro para URL.

    los + y / los caracteres se reemplazan con - y _ respectivamente.

    Codificaci贸n y decodificaci贸n MIME

    Las etiquetas de extensi贸n de correo de Internet multiprop贸sito (MIME) se utilizan para identificar el tipo de medio (HTML, audio, video).

    Dado que muchos tipos de medios, como im谩genes, documentos, etc., se env铆an como archivos adjuntos por correo electr贸nico, es necesario codificarlos en un formato aceptable para todos los protocolos.

    Al enviar archivos adjuntos, como .txt archivo, est谩n codificados en Base64 y adjuntados al correo electr贸nico. As铆 es como puede verse un archivo adjunto:

    Content-Type: text/plain;
    name="log_attachment.txt"
    Content-Disposition: attachment;
    filename="attachment.txt"
    Content-Transfer-Encoding: base64
    
    TUlNRS1WZXJzaW9uOiAxLjANClgtTWFpbGVyOiBNYWlsQmVlLk5FVCA4LjAuNC40MjgNClN1Ympl
    Y3Q6IHRlc3Qgc3ViamVjdA0KVG86IGtldmlubUBkYXRhbW90aW9uLmNvbQ0KQ29udGVudC1UeXBl
    OiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7DQoJYm91bmRhcnk9Ii0tLS09X05leHRQYXJ0XzAwMF9B
    RTZCXzcyNUUwOUFGLjg4QjdGOTM0Ig0KDQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwX0FFNkJfNzI1
    RTA5QUYuODhCN0Y5MzQNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsNCgljaGFyc2V0PSJ1dGYt
    OCINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCg0KdGVzdCBi
    b2R5DQotLS0tLS09X05leHRQYXJ0XzAwMF9BRTZCXzcyNUUwOUFGLjg4QjdGOTM0DQpDb250ZW50
    LVR5cGU6IHRleHQvaHRtbDsNCgljaGFyc2V0PSJ1dGYtOCINCkNvbnRlbnQtVHJhbnNmZXItRW5j
    b2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCg0KPHByZT50ZXN0IGJvZHk8L3ByZT4NCi0tLS0tLT1f
    TmV4dFBhcnRfMDAwX0FFNkJfNzI1RTA5QUYuODhCN0Y5MzQtLQ0K
    

    Al codificar MIME, la salida se formatea para que sea compatible con MIME; las l铆neas no pueden tener m谩s de 76 caracteres y cada l铆nea termina con rn, excepto por el 煤ltimo, naturalmente. los r es un car谩cter de retorno de carro mientras que el n es el car谩cter de nueva l铆nea.

    Hagamos un archivo, llamado file.txt que contiene:

    "I met a traveller from an antique land,
    Who said - 鈥淭wo vast and trunkless legs of stone
    Stand in the desert.... Near them, on the sand,
    Half sunk a shattered visage lies, whose frown,
    And wrinkled lip, and sneer of cold command,
    Tell that its sculptor well those passions read
    Which yet survive, stamped on these lifeless things,
    The hand that mocked them, and the heart that fed;
    And on the pedestal, these words appear:
    My name is Ozymandias, King of Kings;
    Look on my Works, ye Mighty, and despair!
    Nothing beside remains. Round the decay
    Of that colossal Wreck, boundless and bare
    The lone and level sands stretch far away.鈥
    
    Ozymandias, by Percy Bysshe Shelley
    

    Ahora, leamos los bytes del archivo y empaqu茅telos en un byte array, despu茅s de lo cual lo codificaremos:

    byte[] bytes = Files.readAllBytes(Paths.get("path/to/file"));
    String encodedString = Base64.getMimeEncoder().encodeToString(bytes);
    System.out.println(encodedString);
    

    Este c贸digo nos ceder谩:

    IkkgbWV0IGEgdHJhdmVsbGVyIGZyb20gYW4gYW50aXF1ZSBsYW5kLA0KV2hvIHNhaWTigJTigJxU
    d28gdmFzdCBhbmQgdHJ1bmtsZXNzIGxlZ3Mgb2Ygc3RvbmUNClN0YW5kIGluIHRoZSBkZXNlcnQu
    Li4uIE5lYXIgdGhlbSwgb24gdGhlIHNhbmQsDQpIYWxmIHN1bmsgYSBzaGF0dGVyZWQgdmlzYWdl
    IGxpZXMsIHdob3NlIGZyb3duLA0KQW5kIHdyaW5rbGVkIGxpcCwgYW5kIHNuZWVyIG9mIGNvbGQg
    Y29tbWFuZCwNClRlbGwgdGhhdCBpdHMgc2N1bHB0b3Igd2VsbCB0aG9zZSBwYXNzaW9ucyByZWFk
    DQpXaGljaCB5ZXQgc3Vydml2ZSwgc3RhbXBlZCBvbiB0aGVzZSBsaWZlbGVzcyB0aGluZ3MsDQpU
    aGUgaGFuZCB0aGF0IG1vY2tlZCB0aGVtLCBhbmQgdGhlIGhlYXJ0IHRoYXQgZmVkOw0KQW5kIG9u
    IHRoZSBwZWRlc3RhbCwgdGhlc2Ugd29yZHMgYXBwZWFyOg0KTXkgbmFtZSBpcyBPenltYW5kaWFz
    LCBLaW5nIG9mIEtpbmdzOw0KTG9vayBvbiBteSBXb3JrcywgeWUgTWlnaHR5LCBhbmQgZGVzcGFp
    ciENCk5vdGhpbmcgYmVzaWRlIHJlbWFpbnMuIFJvdW5kIHRoZSBkZWNheQ0KT2YgdGhhdCBjb2xv
    c3NhbCBXcmVjaywgYm91bmRsZXNzIGFuZCBiYXJlDQpUaGUgbG9uZSBhbmQgbGV2ZWwgc2FuZHMg
    c3RyZXRjaCBmYXIgYXdheS7igJ0NCg0KT3p5bWFuZGlhcywgYnkgUGVyY3kgQnlzc2hlIFNoZWxs
    ZXk=
    

    Naturalmente, decodificar este contenido es tan f谩cil como:

    Decoder decoder = Base64.getMimeDecoder();
    byte[] decodedBytes = decoder.decode(encodedString);
    System.out.println(new String(decodedBytes));
    

    Este c贸digo producir谩:

    "I met a traveller from an antique land,
    Who said - 鈥淭wo vast and trunkless legs of stone
    Stand in the desert.... Near them, on the sand,
    Half sunk a shattered visage lies, whose frown,
    And wrinkled lip, and sneer of cold command,
    Tell that its sculptor well those passions read
    Which yet survive, stamped on these lifeless things,
    The hand that mocked them, and the heart that fed;
    And on the pedestal, these words appear:
    My name is Ozymandias, King of Kings;
    Look on my Works, ye Mighty, and despair!
    Nothing beside remains. Round the decay
    Of that colossal Wreck, boundless and bare
    The lone and level sands stretch far away.鈥
    
    Ozymandias, by Percy Bysshe Shelley
    

    Apache Commons

    Debido a su utilidad y prevalencia en Java, muchos proyectos han Apache Commons incluido en el classpath. Es una gran biblioteca con muchas caracter铆sticas 煤tiles que se utilizan a menudo en producci贸n, y la codificaci贸n / decodificaci贸n no es una excepci贸n.

    Con Maven, agregarlo a su proyecto es tan f谩cil como incluir la dependencia:

    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${version}</version>
    </dependency>
    

    O, si est谩 usando Gradle:

    compile group: 'commons-codec', name: 'commons-codec', version: '${version}'
    

    Similar a la implementaci贸n oficial de Java, el Base64 class es la API principal. Aunque, en lugar de ser utilizado como f谩brica para Encoder/Decoder instancias, la clase misma maneja toda la codificaci贸n y decodificaci贸n. Otros m茅todos 煤tiles que proporciona son m茅todos como isBase64(), isInAlphabet() y isUrlSafe().

    Codificaci贸n y decodificaci贸n b谩sica de cadenas de Apache Commons

    Sigamos adelante y codifiquemos una cadena simple en Base64. los encodeBase64() el m茅todo acepta un byte matriz, y devuelve un byte matriz, que representa la entrada codificada.

    String inputString = "Some String";
    byte[] bytes = Base64.encodeBase64(inputString.getBytes());
    
    System.out.println(new String(bytes));
    

    Ejecutar este c贸digo producir谩:

    U29tZSBTdHJpbmc=
    

    Alternativamente, puede utilizar el encodeBase64String() m茅todo, que devolver谩 un String, en lugar de un byte formaci贸n:

    String inputString = "Some String";
    String encodedString = Base64.encodeBase64String(inputString.getBytes());
    
    System.out.println(encodedString);
    

    Ejecutar este c贸digo producir谩:

    U29tZSBTdHJpbmc=
    

    En la misma l铆nea, el Base64 class tambi茅n se utiliza como decodificador. Acepta un byte matriz o cadena y devuelve un byte formaci贸n:

    String decodedString = new String(Base64.decodeBase64(encodedString.getBytes()));
    System.out.println(decodedString);
    // Or
    String anotherDecodedString = new String(Base64.decodeBase64(encodedString));
    System.out.println(anotherDecodedString);
    

    Ejecutar este c贸digo producir谩:

    Some String
    Some String
    

    Codificaci贸n y decodificaci贸n de URL de Apache Commons

    La codificaci贸n y decodificaci贸n de URL sigue el mismo principio:

    String originalInput = "https://Pharos.sh.com/tag/java/";
    byte[] bytes = Base64.encodeBase64URLSafe(originalInput.getBytes());
    
    System.out.println(new String(bytes));
    

    Ejecutar esto resultar谩 en:

    aHR0cHM6Ly9zdGFja2FidXNlLmNvbS90YWcvamF2YS8=
    

    Tambi茅n puede devolver una cadena en lugar de una byte formaci贸n:

    String originalInput = "https://Pharos.sh.com/tag/java/";
    String encodedString = Base64.encodeBase64URLSafeString(originalInput.getBytes());
    
    System.out.println(encodedString);
    

    los encodedStringLos contenidos son:

    aHR0cHM6Ly9zdGFja2FidXNlLmNvbS90YWcvamF2YS8=
    

    Y finalmente, tambi茅n podemos decodificar la representaci贸n Base64 de la URL:

    String decodedUrl = new String(Base64.decodeBase64(encodedString.getBytes()));
    System.out.println(decodedUrl);
    // Or
    String anotherDecodedUrl = Base64.decodeBase64(encodedString);
    System.out.println(anotherDecodedUrl);
    
    https://Pharos.sh.com/tag/java/
    https://Pharos.sh.com/tag/java/
    

    Codificaci贸n y decodificaci贸n MIME de Apache Commons

    La codificaci贸n y decodificaci贸n de tipos MIME es un poco diferente a la implementaci贸n oficial de Java. Esta vez usamos el encodeBase64Chunked() m茅todo:

    byte[] bytes = Files.readAllBytes(Paths.get("path/to/file"));
    String encodedString = new String(Base64.encodeBase64Chunked(bytes));
    System.out.println(encodedString);
    

    Este c贸digo da como resultado:

    IkkgbWV0IGEgdHJhdmVsbGVyIGZyb20gYW4gYW50aXF1ZSBsYW5kLA0KV2hvIHNhaWTigJTigJxU
    d28gdmFzdCBhbmQgdHJ1bmtsZXNzIGxlZ3Mgb2Ygc3RvbmUNClN0YW5kIGluIHRoZSBkZXNlcnQu
    Li4uIE5lYXIgdGhlbSwgb24gdGhlIHNhbmQsDQpIYWxmIHN1bmsgYSBzaGF0dGVyZWQgdmlzYWdl
    IGxpZXMsIHdob3NlIGZyb3duLA0KQW5kIHdyaW5rbGVkIGxpcCwgYW5kIHNuZWVyIG9mIGNvbGQg
    Y29tbWFuZCwNClRlbGwgdGhhdCBpdHMgc2N1bHB0b3Igd2VsbCB0aG9zZSBwYXNzaW9ucyByZWFk
    DQpXaGljaCB5ZXQgc3Vydml2ZSwgc3RhbXBlZCBvbiB0aGVzZSBsaWZlbGVzcyB0aGluZ3MsDQpU
    aGUgaGFuZCB0aGF0IG1vY2tlZCB0aGVtLCBhbmQgdGhlIGhlYXJ0IHRoYXQgZmVkOw0KQW5kIG9u
    IHRoZSBwZWRlc3RhbCwgdGhlc2Ugd29yZHMgYXBwZWFyOg0KTXkgbmFtZSBpcyBPenltYW5kaWFz
    LCBLaW5nIG9mIEtpbmdzOw0KTG9vayBvbiBteSBXb3JrcywgeWUgTWlnaHR5LCBhbmQgZGVzcGFp
    ciENCk5vdGhpbmcgYmVzaWRlIHJlbWFpbnMuIFJvdW5kIHRoZSBkZWNheQ0KT2YgdGhhdCBjb2xv
    c3NhbCBXcmVjaywgYm91bmRsZXNzIGFuZCBiYXJlDQpUaGUgbG9uZSBhbmQgbGV2ZWwgc2FuZHMg
    c3RyZXRjaCBmYXIgYXdheS7igJ0NCg0KT3p5bWFuZGlhcywgYnkgUGVyY3kgQnlzc2hlIFNoZWxs
    ZXk=
    

    La decodificaci贸n es la misma que antes:

    String decodedMime = new String(Base64.decodeBase64(encodedString.getBytes()));
    System.out.println(decodedMime);
    // Or
    String anotherDecodedMime = Base64.decodeBase64(encodedString);
    System.out.println(anotherDecodedMime);
    

    Este c贸digo da como resultado:

    "I met a traveller from an antique land,
    Who said - 鈥淭wo vast and trunkless legs of stone
    Stand in the desert.... Near them, on the sand,
    Half sunk a shattered visage lies, whose frown,
    And wrinkled lip, and sneer of cold command,
    Tell that its sculptor well those passions read
    Which yet survive, stamped on these lifeless things,
    The hand that mocked them, and the heart that fed;
    And on the pedestal, these words appear:
    My name is Ozymandias, King of Kings;
    Look on my Works, ye Mighty, and despair!
    Nothing beside remains. Round the decay
    Of that colossal Wreck, boundless and bare
    The lone and level sands stretch far away.鈥
    
    Ozymandias, by Percy Bysshe Shelley
    

    M茅todos auxiliares de Apache Commons

    En la verdadera moda de Apache Commons, se nos presentan algunos m茅todos auxiliares que nos hacen la vida un poco m谩s f谩cil. Por ejemplo, podemos comprobar si un String o un byte la matriz est谩 en Base64 v谩lida:

    String originalInput = "https://Pharos.sh.com/tag/java/";
    byte[] bytes = Base64.encodeBase64URLSafe(originalInput.getBytes());
    
    System.out.println(Base64.isBase64(bytes));
    // Or
    System.out.println(Base64.isBase64(encodedString));
    

    Este c贸digo dar铆a como resultado:

    true 
    true
    

    Podemos comprobar si estamos en modo seguro para URL o no:

    System.out.println(Base64.isUrlSafe());
    

    Dado que hemos codificado una cadena de URL a trav茅s del encodeBase64URLSafe() m茅todo, este c贸digo da como resultado:

    true
    

    Y finalmente, podemos comprobar si cada individuo byte de nuestra matriz est谩 en el alfabeto Base64:

    for (int i = 0; i < bytes.length; i++) {
        System.out.println(Base64.isInAlphabet(bytes[i]));
    }
    

    Conclusi贸n

    En este art铆culo, nos sumergimos en lo que es la codificaci贸n y decodificaci贸n, seguido de una descripci贸n general de Base64. Hemos codificado manualmente una cadena para comprender mejor el proceso, que precede a muchos ejemplos de c贸digo.

    Utilizando el Base64 class en Java nos permite hacer diferentes tipos de codificadores y decodificadores, optimizados para codificar y decodificar cadenas b谩sicas, URL y tipos MIME.

    Utilizando el Base64 clase proporcionada por Apache Commons, confiamos en la clase base para hacer la codificaci贸n directamente.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *