cnpjcpf.
Código · C#

Gerar CPF em C#

Método sem dependências que gera um CPF matematicamente válido para teste: sorteia 9 dígitos de base e calcula os dois verificadores pelo módulo 11. Números fictícios, só para dev e QA.

O método

C#
using System;
using System.Text;

public static class DocGen {
    static readonly Random rnd = new();

    static int DvCpf(string b) {
        int n = b.Length, s = 0;
        for (int i = 0; i < n; i++) s += (b[i] - '0') * ((n + 1) - i);
        int r = s % 11; return r < 2 ? 0 : 11 - r;
    }
    public static string GenerateCpf() {
        var sb = new StringBuilder();
        for (int i = 0; i < 9; i++) sb.Append(rnd.Next(10));
        int d1 = DvCpf(sb.ToString());
        int d2 = DvCpf(sb.ToString() + d1);
        return sb.ToString() + d1 + d2;
    }
}

DocGen.GenerateCpf(); // ex.: "11144477735" (11 dígitos, sem máscara)

Sorteia 9 dígitos de base com rnd.Next(10), calcula o 1º verificador e, em seguida, o 2º — incluindo o 1º DV no cálculo. Cada dígito é multiplicado por um peso decrescente e o resto da divisão por 11 vira o verificador: r < 2 ? 0 : 11 - r. É o módulo 11 aplicado para frente. O retorno são só os 11 dígitos, sem pontuação.

Formatar na exibição

O método devolve a string limpa. Aplique a máscara só na hora de mostrar, sem alterar o que você guarda:

C#
using System.Text.RegularExpressions;

string Mascarar(string cpf) =>
    Regex.Replace(cpf, @"(\d{3})(\d{3})(\d{3})(\d{2})", "$1.$2.$3-$4");

Mascarar(DocGen.GenerateCpf()); // ex.: "111.444.777-35"
publicidade

Cuidados

  • Número fictício, não real. O método gera um CPF que passa no módulo 11, mas não corresponde a nenhuma pessoa. É para teste de software e QA — ver se é legal gerar CPF/CNPJ.
  • Válido ≠ existe. Consistência matemática não é emissão pela Receita. Não use saída de gerador como dado de pessoa real.
  • Sequências repetidas (11111111111) são tecnicamente consistentes no módulo 11; o gerador quase nunca as produz (base aleatória), mas o validador as descarta de propósito.
  • Random não é criptográfico. Para massa de teste tudo bem; se precisar de imprevisibilidade real, troque por System.Security.Cryptography.RandomNumberGenerator.
  • Guarde sem máscara (só os 11 dígitos, em string) e formate só na exibição.

Continue

Perguntas frequentes

Como gerar um CPF válido em C# sem biblioteca?
Com um método estático que sorteia 9 dígitos de base e calcula os dois verificadores pelo módulo 11. Usa só System e System.Text (StringBuilder), sem pacote externo.
O CPF gerado é de uma pessoa real?
Não. A função produz um número que passa no módulo 11 (consistência matemática), mas não corresponde a nenhuma pessoa nem foi emitido pela Receita Federal. É para teste de software e QA — veja se é legal gerar CPF/CNPJ.
System.Random é seguro o bastante?
Para massa de teste, sim. Não é criptográfico: se precisar de imprevisibilidade real, troque por System.Security.Cryptography.RandomNumberGenerator.
Código em C# verificado. Algoritmo módulo 11 oficial. Números fictícios para teste de software. Revisado em 06/2026.