Generando NIF válidos

En el trabajo muchas veces necesito generar números de nif válidos para testear y  en tiempos me cree una clase que me genera números de forma aleatoria, puediendo pasarle o no una semilla, de forma que todos los números generados acaben en esos dígitos.
La clase de utilidad se llama NifUtil, si le paso NifUtil.generaNif(null) me genera un nif válido y si le paso
NifUtil.generaNif("4444") me genera un nif que acabará en "4444".
Por poco más precio le añadí dos métodos uno que me calcula la letra dando el número y otro que me verifica que la letra es correcta.
package es.jeelabs.beautils;

public class NifUtil {

    private static final char[] LETRAS_NIF = { 'T', 'R', 'W', 'A', 'G', 'M',
            'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H',
            'L', 'C', 'K', 'E' };
    public static String generaNif(String seed) {
        if (seed != null) {
            try {
                Integer.parseInt(seed);
            } catch (NumberFormatException ex) {
                return "KO";
            }
        } else {
            seed = "";
        }
        String numeroDNI = String.valueOf(Math.random()).concat(seed);
        String fullDNI = numeroDNI.substring(numeroDNI.length() - 8);

        int dniInt = Integer.valueOf(fullDNI);
        fullDNI = fullDNI + LETRAS_NIF[dniInt % 23];
        return fullDNI;
    }
    public static String calculaLetra(String nif) {
        if (nif.length() != 8) {
            return ("Nif Inválido");
        }
        return generaNif(nif).substring(8);
    }

    public static String validaNif(String nif) {
        if (nif.substring(0, 8).length() == 8) {
            return nif.equalsIgnoreCase(generaNif(nif.substring(0, 8))) ? "OK"
                    : "KO";
        } else {
            return ("Nif Inválido");
        }
    }
}
No es un código para presentarlo a concurso ni por originalidad ni por eficiencia pero funciona. :-)

Comentarios