La validación de números de cuenta bancaria utilizando el formato IBAN (International Bank Account Number) es esencial para asegurar que los datos bancarios sean correctos y reducir posibles errores en transacciones financieras. En este artículo, exploraremos cómo verificar la validez de un número IBAN en Java, implementando un enfoque sencillo para comprobar que el formato y los dígitos de control del número son válidos.
¿Qué es el IBAN?
El IBAN es un código internacional que identifica de manera única una cuenta bancaria en cualquier parte del mundo. Su estructura se compone de:
- Código del país: Dos letras que representan el país de la cuenta (por ejemplo, «ES» para España).
- Dígitos de control: Dos números utilizados para verificar la validez del IBAN.
- Código bancario y número de cuenta: El resto de la secuencia, que varía según el país.
Requisitos para la Validación IBAN
Para validar un número IBAN, se debe realizar una serie de pasos que incluyen:
- Verificar el formato: Asegurarse de que el IBAN cumple con la longitud específica de cada país.
- Convertir a formato numérico: Cambiar las letras en dígitos.
- Calcular y comprobar los dígitos de control: Usar un cálculo mod 97 para validar el número IBAN completo.
Código en Java para Validar un Número IBAN
A continuación, te muestro una implementación en Java que permite validar un número IBAN.
public class IBANValidator {
// Método principal para validar el IBAN
public static boolean validarIBAN(String iban) {
// Paso 1: Eliminar espacios y convertir el IBAN a mayúsculas
iban = iban.replaceAll("\\s+", "").toUpperCase();
// Paso 2: Comprobar que el IBAN tenga la longitud correcta
if (!longitudIBANValida(iban)) {
return false;
}
// Paso 3: Reordenar el IBAN (mover los primeros 4 caracteres al final)
String ibanReordenado = iban.substring(4) + iban.substring(0, 4);
// Paso 4: Convertir cada letra en números según su posición en el alfabeto
StringBuilder ibanNumerico = new StringBuilder();
for (char ch : ibanReordenado.toCharArray()) {
if (Character.isLetter(ch)) {
int valorNumerico = ch - 'A' + 10;
ibanNumerico.append(valorNumerico);
} else {
ibanNumerico.append(ch);
}
}
// Paso 5: Comprobar el IBAN usando el módulo 97
return mod97(ibanNumerico.toString()) == 1;
}
// Método para comprobar la longitud del IBAN según el país
private static boolean longitudIBANValida(String iban) {
// Aquí puedes agregar más longitudes para otros países si es necesario
int longitudEsperada = 0;
String codigoPais = iban.substring(0, 2);
switch (codigoPais) {
case "ES": // España
longitudEsperada = 24;
break;
// Agrega aquí otros países según sea necesario
default:
return false;
}
return iban.length() == longitudEsperada;
}
// Método para calcular el módulo 97
private static int mod97(String numero) {
String temp = "";
for (int i = 0; i < numero.length(); i++) {
temp += numero.charAt(i);
int tempValor = Integer.parseInt(temp);
if (tempValor >= 97) {
tempValor %= 97;
temp = String.valueOf(tempValor);
}
}
return Integer.parseInt(temp) % 97;
}
public static void main(String[] args) {
// Prueba con un IBAN de ejemplo
String iban = "ES9121000418450200051332"; // Ejemplo de IBAN español válido
if (validarIBAN(iban)) {
System.out.println("El IBAN " + iban + " es válido.");
} else {
System.out.println("El IBAN " + iban + " no es válido.");
}
}
}
Explicación del Código
- Eliminar espacios y convertir a mayúsculas: Esto garantiza que el IBAN sea uniforme, independientemente del formato de entrada.
- Longitud del IBAN: Verificamos la longitud de acuerdo con el país. En este ejemplo, sólo incluimos el caso de España (24 caracteres), pero se pueden agregar otros países si es necesario.
- Reordenar el IBAN: Para el cálculo de validación, los primeros 4 caracteres se mueven al final.
- Convertir letras a números: Cada letra se convierte en su valor numérico (A = 10, B = 11, …, Z = 35) para realizar el cálculo.
- Cálculo mod 97: La función
mod97
utiliza el algoritmo estándar para verificar la validez del IBAN. Si el resultado es 1, el IBAN es válido.
Pruebas y Ejecución
Al ejecutar el código, puedes probar con diferentes números IBAN para verificar su validez. Asegúrate de incluir pruebas con distintos formatos (con o sin espacios) y de diferentes países (si amplías el método de validación).
Conclusión
La validación de IBAN en Java es un proceso que asegura que los números de cuenta sean correctos antes de realizar operaciones bancarias. Este enfoque evita errores de transacciones y puede implementarse en cualquier aplicación que requiera manejo de cuentas bancarias. Con este método, puedes confiar en que el IBAN ingresado cumple con los estándares internacionales y es apto para su uso.