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. Randomnão é criptográfico. Para massa de teste tudo bem; se precisar de imprevisibilidade real, troque porSystem.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.