public static bool verificarCPF(string CPF)
        {
            int[] mt1 = new int[9] {
                10, 9, 8, 7, 6, 5, 4, 3, 2
            };
            int[] mt2 = new int[10] {
                11, 10, 9, 8, 7, 6, 5, 4, 3, 2
            };
            string TempCPF;
            string Digito;
            int    soma;
            int    resto;

            CPF = CPF.Trim();
            CPF = CPF.Replace(".", "").Replace("-", "");

            if (CPF.Length != 11)
            {
                return(false);
            }

            TempCPF = CPF.Substring(0, 9);
            soma    = 0;
            for (int i = 0; i < 9; i++)
            {
                soma += int.Parse(TempCPF[i].ToString()) * mt1[i];
            }

            resto = soma % 11;
            if (resto < 2)
            {
                resto = 0;
            }
            else
            {
                resto = 11 - resto;
            }

            Digito  = resto.ToString();
            TempCPF = TempCPF + Digito;
            soma    = 0;

            for (int i = 0; i < 10; i++)
            {
                soma += int.Parse(TempCPF[i].ToString()) * mt2[i];
            }

            resto = soma % 11;
            if (resto < 2)
            {
                resto = 0;
            }
            else
            {
                resto = 11 - resto;
            }

            Digito = Digito + resto.ToString();

            return(CPF.EndsWith(Digito));
        }