Si encuentras alguna parte que te causa duda puedes dejarlo en la sección de comentarios y haremos todo lo posible de ayudarte tan rápido como podamos.
Solución:
Puede utilizar la siguiente expresión regular para comprobar si un string está codificado en base64 o no:
^([A-Za-z0-9+/]4)*([A-Za-z0-9+/]3=|[A-Za-z0-9+/]2==)?$
En la codificación base64, el conjunto de caracteres es [A-Z, a-z, 0-9, and + /]
. Si la longitud restante es menor que 4, el string está acolchado con '='
caracteres.
^([A-Za-z0-9+/]4)*
significa el string comienza con 0 o más grupos base64.
([A-Za-z0-9+/]4|[A-Za-z0-9+/]3=|[A-Za-z0-9+/]2==)$
significa el string termina en una de tres formas: [A-Za-z0-9+/]4
, [A-Za-z0-9+/]3=
o [A-Za-z0-9+/]2==
.
Si está usando Java, puede usar la biblioteca commons-codec
import org.apache.commons.codec.binary.Base64;
String stringToBeChecked = "...";
boolean isBase64 = Base64.isArrayByteBase64(stringToBeChecked.getBytes());
[UPDATE 1] Aviso de obsolescencia Usar en su lugar
Base64.isBase64(valor);
/**
* Tests a given byte array to see if it contains only valid characters within the Base64 alphabet. Currently the
* method treats whitespace as valid.
*
* @param arrayOctet
* byte array to test
* @return @code true if all bytes are valid characters in the Base64 alphabet or if the byte array is empty;
* @code false, otherwise
* @deprecated 1.5 Use @link #isBase64(byte[]), will be removed in 2.0.
*/
@Deprecated
public static boolean isArrayByteBase64(final byte[] arrayOctet)
return isBase64(arrayOctet);
Bien tu puedes:
- Comprueba que la longitud es un múltiplo de 4 caracteres
- Verifique que todos los caracteres estén en el conjunto AZ, az, 0-9, +, / excepto el relleno al final que es 0, 1 o 2 ‘=’ caracteres
Si estás esperando que voluntad sea base64, entonces probablemente pueda usar cualquier biblioteca disponible en su plataforma para probar para decodificarlo a un byte arraylanzando una excepción si no es una base 64 válida. Eso depende de su plataforma, por supuesto.
Comentarios y puntuaciones
Puedes secundar nuestro quehacer mostrando un comentario o dejando una puntuación te lo agradecemos.