/** * Verifica se o CPF informado é válido. * * @param cpf * @return boolean */ public static boolean isCPFValido(String cpf) { int dig1; int dig2; int digito1; int digito2; int resto; int digitoCPF; String nDigResult = ""; dig1 = 0; dig2 = 0; digito1 = 0; digito2 = 0; resto = 0; for (int nCount = 1; nCount < cpf.length() - 1; nCount++) { digitoCPF = Integer.valueOf(cpf.substring(nCount - 1, nCount)); // multiplique a ultima casa por 2 a seguinte por 3 a // seguinte por 4 // e assim por diante. dig1 = dig1 + (11 - nCount) * digitoCPF; // para o segundo digito repita o procedimento incluindo o // primeiro // digito calculado no passo anterior. dig2 = dig2 + (12 - nCount) * digitoCPF; } // Primeiro resto da divisão por 11. resto = (dig1 % 11); // Se o resultado for 0 ou 1 o digito é 0 caso contrário o // digito é 11 // menos o resultado anterior. if (resto < 2) { digito1 = 0; } else { digito1 = 11 - resto; } dig2 += 2 * digito1; // Segundo resto da divisão por 11. resto = (dig2 % 11); // Se o resultado for 0 ou 1 o digito é 0 caso contrário o // digito é 11 // menos o resultado anterior. if (resto < 2) { digito2 = 0; } else { digito2 = 11 - resto; } // Digito verificador do CPF que está sendo validado. String nDigVerific = cpf.substring(cpf.length() - 2, cpf.length()); // Concatenando o primeiro resto com o segundo. nDigResult = UtilString.concatenar(nDigResult, digito1, digito2); // NOPMD // comparar o digito verificador do cpf com o primeiro resto + o segundo // resto. return nDigVerific.equals(nDigResult); }