Base 64 codifica y decodifica código de ejemplo

¿Alguien sabe cómo decodificar y codificar una cadena en Base64 con Base64? Estoy usando el siguiente código, pero no está funcionando.

String source = "password"; byte[] byteArray = source.getBytes("UTF-16"); Base64 bs = new Base64(); //bs.encodeBytes(byteArray); System.out.println( bs.encodeBytes(byteArray)); //bs.decode(bs.encodeBytes(byteArray)); System.out.println(bs.decode(bs.encodeBytes(byteArray))); 

Primero:

  • Elige una encoding UTF-8 es generalmente una buena opción; apegarse a una encoding que definitivamente será válida en ambos lados. Sería raro usar algo que no sea UTF-8 o UTF-16.

Fin transmisor:

  • Codifique la cadena en bytes (por ejemplo, text.getBytes(encodingName) )
  • Codifique los bytes a base64 utilizando la clase Base64
  • Transmita la base64

Extremo de recepción:

  • Recibe la base64
  • Decodifica la base64 en bytes utilizando la clase Base64
  • Decodificar los bytes a una cadena (por ejemplo, new String(bytes, encodingName) )

Entonces algo así como:

 // Sending side byte[] data = text.getBytes("UTF-8"); String base64 = Base64.encodeToString(data, Base64.DEFAULT); // Receiving side byte[] data = Base64.decode(base64, Base64.DEFAULT); String text = new String(data, "UTF-8"); 

O con StandardCharsets :

 // Sending side byte[] data = text.getBytes(StandardCharsets.UTF_8); String base64 = Base64.encodeToString(data, Base64.DEFAULT); // Receiving side byte[] data = Base64.decode(base64, Base64.DEFAULT); String text = new String(data, StandardCharsets.UTF_8); 

Para cualquier otra persona que terminó aquí mientras buscaba información sobre cómo decodificar una cadena codificada con Base64.encodeBytes() , aquí estaba mi solución:

 // encode String ps = "techPass"; String tmp = Base64.encodeBytes(ps.getBytes()); // decode String ps2 = "dGVjaFBhC3M="; byte[] tmp2 = Base64.decode(ps2); String val2 = new String(tmp2, "UTF-8"); 

Además, estoy apoyando versiones anteriores de Android, así que estoy usando la biblioteca Base64 de Robert Harder desde http://iharder.net/base64.

algo como

 String source = "password"; byte[] byteArray; try { byteArray = source.getBytes("UTF-16"); System.out.println(new String(Base64.decode(Base64.encode(byteArray, Base64.DEFAULT), Base64.DEFAULT))); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Si está usando Kotlin que usar de esta manera

Para codificar

 val password = "Here Your String" val data = password.toByteArray(charset("UTF-8")) val base64 = Base64.encodeToString(data, Base64.DEFAULT) 

Para decodificar

 val datasd = Base64.decode(base64, Base64.DEFAULT) val text = String(datasd, charset("UTF-8")) 

Para Kotlin mb es mejor usar esto:

 fun String.decode(): String { return Base64.decode(this, Base64.DEFAULT).toString(charset("UTF-8")) } fun String.encode(): String { return Base64.encodeToString(this.toByteArray(charset("UTF-8")), Base64.DEFAULT) } 

Ejemplo:

 Log.d("LOGIN", "TEST") Log.d("LOGIN", "TEST".encode()) Log.d("LOGIN", "TEST".encode().decode()) 

Para encriptar:

 byte[] encrpt= text.getBytes("UTF-8"); String base64 = Base64.encodeToString(encrpt, Base64.DEFAULT); 

Para descifrar:

 byte[] decrypt= Base64.decode(base64, Base64.DEFAULT); String text = new String(decrypt, "UTF-8"); 

Basado en las respuestas anteriores, estoy usando los siguientes métodos de utilidad en caso de que alguien quiera usarlo.

  /** * @param message the message to be encoded * * @return the enooded from of the message */ public static String toBase64(String message) { byte[] data; try { data = message.getBytes("UTF-8"); String base64Sms = Base64.encodeToString(data, Base64.DEFAULT); return base64Sms; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } /** * @param message the encoded message * * @return the decoded message */ public static String fromBase64(String message) { byte[] data = Base64.decode(message, Base64.DEFAULT); try { return new String(data, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } 

Para nivel de API 26+

 String encodedString = Base64.getEncoder().encodeToString(byteArray); 

Ref: https://developer.android.com/reference/java/util/Base64.Encoder.html#encodeToString (byte [])

para el byte api android [] al codificador Base64String

byte [] data = new byte []; String Base64encodeString = android.util.Base64.encodeToString (data, android.util.Base64.DEFAULT);