ejemplo - Base64 Java codifica y decodifica una cadena
decode base64 java online (6)
Java 8 ahora es compatible con codificación y decodificación BASE64. Puede usar las siguientes clases: java.util.Base64
, java.util.Base64.Encoder
y java.util.Base64.Decoder
.
Ejemplo de uso:
// encode with padding
String encoded = Base64.getEncoder().encodeToString(someByteArray);
// encode without padding
String encoded = Base64.getEncoder().withoutPadding().encodeToString(someByteArray);
// decode a String
byte [] barr = Base64.getDecoder().decode(encoded);
Esta pregunta ya tiene una respuesta aquí:
- Codificación Base64 en Java 16 respuestas
Quiero codificar una cadena en base64 y transferirla a través de un socket y decodificarla de nuevo. Pero después de decodificar da una respuesta diferente. A continuación está mi código y el resultado es "77 + 9x6s ="
import javax.xml.bind.DatatypeConverter;
public class f{
public static void main(String a[]){
String str = new String(DatatypeConverter.parseBase64Binary("user:123"));
String res = DatatypeConverter.printBase64Binary(str.getBytes());
System.out.println(res);
}
}
¿Alguna idea sobre cómo implementar esto?
Gracias...
La respuesta aceptada usa el paquete Apache Commons, pero así es como lo hice usando javax.xml.bind.DatatypeConverter
; esto funciona al menos desde Java 6 en:
import java.io.UnsupportedEncodingException;
import javax.xml.bind.DatatypeConverter;
public class EncodeString64 {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "77+9x6s=";
// encode data using BASE64
String encoded = DatatypeConverter.printBase64Binary(str.getBytes());
System.out.println("encoded value is /t" + encoded);
// Decode data
String decoded = new String(DatatypeConverter.parseBase64Binary(encoded));
System.out.println("decoded value is /t" + decoded);
System.out.println("original value is /t" + str);
}
}
La mejor manera sería intentar / capturar los pasos de codificación / descodificación, pero ojalá tenga la idea.
La siguiente es una buena solución:
import android.util.Base64;
String converted = Base64.encodeToString(toConvert.toString().getBytes(), Base64.DEFAULT);
String stringFromBase = new String(Base64.decode(converted, Base64.DEFAULT));
Eso es. Una sola línea de codificación y decodificación.
Para los usuarios de Spring, Spring Security tiene una clase Base64 en el paquete org.springframework.security.crypto.codec
que también se puede usar para codificar y decodificar Base64. Ex.
public static String base64Encode(String token) {
byte[] encodedBytes = Base64.encode(token.getBytes());
return new String(encodedBytes, Charset.forName("UTF-8"));
}
public static String base64Decode(String token) {
byte[] decodedBytes = Base64.decode(token.getBytes());
return new String(decodedBytes, Charset.forName("UTF-8"));
}
Puede usar el siguiente enfoque:
// Encode data on your side using BASE64
byte[] bytesEncoded = Base64.encodeBase64(str.getBytes());
System.out.println("encoded value is " + new String(bytesEncoded));
// Decode data on other side, by processing encoded data
byte[] valueDecoded = Base64.decodeBase64(bytesEncoded);
System.out.println("Decoded value is " + new String(valueDecoded));
Espero que esto responda a tu duda.
import javax.xml.bind.DatatypeConverter;
public class f{
public static void main(String a[]){
String str = new String(DatatypeConverter.printBase64Binary(new String("user:123").getBytes()));
String res = DatatypeConverter.parseBase64Binary(str);
System.out.println(res);
}
}