Gerador de strings aleatórias

Qualquer comprimento, qualquer conjunto de caracteres, com distribuição uniforme.

Sua string aleatóriaTudo no seu navegador

 

Tipos de caracteres
Opções avançadas

Este gerador de strings aleatórias cria texto aleatório criptograficamente seguro, do comprimento que você quiser e com o alfabeto que você escolher. Tudo acontece no seu navegador, então nada é enviado a lugar nenhum.

O que é uma string aleatória?

Uma string aleatória é uma sequência de caracteres sorteados de forma independente de um alfabeto, sem nenhum padrão que ligue uma posição à seguinte. Ao contrário de uma senha ou de um UUID, ela não tem estrutura obrigatória: o comprimento e o conjunto de caracteres quem decide é você.

String aleatória, senha ou UUID

Os três são valores imprevisíveis, mas não oferecem as mesmas garantias.

Um gerador de senhas garante que haja caracteres de cada tipo que você marcou. Um UUID tem uma estrutura fixa de 128 bits que outros sistemas sabem ler. Um gerador de string aleatória não promete nenhuma das duas coisas, e é exatamente por isso que ele serve quando quem controla o formato é você.

E se o que você procura é uma letra solta para um jogo ou uma aula, o gerador de letras aleatórias sorteia um caractere de cada vez e o mostra bem grande.

Por que o conjunto de caracteres importa

Cada caractere contribui com log₂(tamanho do conjunto) bits. Um dígito contribui com 3,3 bits; um caractere alfanumérico, com 5,95.

Ou seja, um alfabeto menor não é automaticamente mais fraco. Ajuste o comprimento, e um gerador de strings aleatórias limitado ao hexadecimal chega à mesma segurança de um que usa todos os caracteres.

Uma matriz com os bits de entropia de strings aleatórias de 8, 16, 32 e 64 caracteres em cinco conjuntos: só dígitos, hexadecimal, letras, alfanumérico e todos os caracteres. Mostra que um conjunto menor se compensa com comprimento: 32 caracteres hexadecimais chegam a 128 bits, mais ou menos o que dão 22 alfanuméricos, enquanto 8 caracteres não bastam em nenhum conjunto. As células abaixo de 64 bits ficam em vermelho, as de 64 a menos de 128 em âmbar e as de 128 ou mais em verde-azulado.

Entropia por conjunto de caracteres e comprimento. 32 caracteres hexadecimais chegam exatamente a 128 bits usando só 16 símbolos diferentes.Entropia = comprimento × log₂(tamanho do conjunto). Todos os números podem ser reproduzidos com essa fórmula.

Como este gerador de strings aleatórias funciona

De onde vem o acaso

Os caracteres vêm de crypto.getRandomValues(), a fonte aleatória criptográfica do navegador, alimentada pela reserva de entropia do sistema operacional.

Math.random() não é usado em nenhuma parte deste site. Ele parte de uma semente e é determinístico: serve para embaralhar uma playlist, mas não para nada que chegue perto de segurança.

O viés do módulo

Conseguir bytes aleatórios é a parte fácil. Transformá-los em caracteres do seu alfabeto sem distorcer o resultado é onde muitas implementações erram sem avisar, e é a única coisa que um gerador de strings aleatórias precisa acertar de qualquer jeito.

O caminho óbvio é randomByte % 62. Um byte tem 256 valores, e 256 dividido por 62 dá 4, com resto 8.

Esses 8 valores que sobram caem nos oito primeiros caracteres, então de a a h eles saem 25% mais vezes que o resto. O resultado continua parecendo aleatório; só não é uniforme.

Dois gráficos de barras que comparam quantas vezes sai cada caractere de um conjunto de 62. Com um byte aleatório módulo 62, os oito primeiros caracteres, de a a h, saem 25 por cento mais vezes que o resto, porque 256 dividido por 62 deixa resto 8. Com amostragem por rejeição, todos os caracteres saem com a mesma frequência. Um conjunto hexadecimal de 16 caracteres não tem viés, porque 16 divide 256 exatamente.

Os mesmos bytes aleatórios, convertidos de duas formas. Um gerador de string aleatória que usa uma operação de módulo pende para o começo do alfabeto.256 = 62 × 4 + 8. Um conjunto hexadecimal de 16 caracteres não é afetado, porque 16 divide 256 exatamente.

Como a amostragem por rejeição resolve

Em vez de devolver os valores que sobram aos primeiros caracteres, eles são descartados e um byte novo é sorteado.

Descartar valores parece desperdício, mas a máscara tem o tamanho certo para que nunca se rejeite mais da metade. O custo não se nota, e o gerador de strings aleatórias termina com uma distribuição exatamente uniforme.

Por que isso importa em valores sensíveis

Em dados de teste, um viés de 25% não faz mal. Num token ou numa chave, ele dá vantagem a um atacante: as tentativas podem ser ordenadas da mais provável para a menos provável, em vez de feitas ao acaso.

Como todas as ferramentas deste site usam o mesmo motor, a correção vale tanto para dados de teste descartáveis quanto para algo que protege um acesso de verdade.

Escolher um conjunto de caracteres

OpçãoCaracteresTamanhoUse para
AlfanuméricoA-Z a-z 0-962Identificadores de uso geral
LetrasA-Z a-z52Sistemas que não aceitam números
Números0-910Códigos e referências numéricas
Hex0-9 a-f16Hashes, cores e valores alinhados a bytes
Seguro para URLA-Z a-z 0-9 - _64URLs e nomes de arquivo, sem escapar nada

Alfanumérico: a opção segura

São 62 caracteres, sem pontuação que precise ser escapada ou que um sistema mais adiante estrague ou recuse. É o ponto de partida do gerador de strings aleatórias e a resposta certa na dúvida.

Hexadecimal

O hexadecimal se encaixa direitinho nos bytes: dois caracteres por byte, então 32 caracteres são exatamente 16 bytes. Por isso ele é a escolha natural quando um valor precisa bater com um comprimento específico em bits.

Seguro para URL

Acrescentar - e _ ao conjunto alfanumérico dá 64 caracteres que passam por uma URL, um nome de arquivo ou um argumento de terminal sem precisar escapar nada.

Conjuntos próprios e exclusões

Se você escrever os seus próprios caracteres, as opções deixam de valer. Os repetidos são eliminados antes, então aab se comporta igual a ab e nenhum caractere pesa em dobro.

O campo de exclusão funciona ao contrário: tira caracteres do conjunto ativo. Passe ao gerador de strings aleatórias il1Lo0O quando uma pessoa for ler o valor em voz alta ou copiá-lo à mão.

As opções de letras usam as 26 letras de a a z, sem o ç nem letras acentuadas. Não é descuido: essas strings acabam em URLs, nomes de arquivo e chaves de banco de dados, onde o ç precisa ser codificado e alguns sistemas nem o aceitam. Se precisar dele, escreva-o no seu conjunto próprio.

Como usar este gerador de strings aleatórias

Defina o comprimento

O controle deslizante vai de 1 a 1024 caracteres e começa em 32. A entropia é atualizada enquanto você o move, mostrando tanto os bits quanto o tamanho do conjunto ativo.

Escolha os caracteres

Use os conjuntos predefinidos para os casos comuns, ou as quatro opções para ajustar. O que você escrever no campo de conjunto próprio tem prioridade, e as opções ficam desativadas para deixar isso claro.

Só caracteres únicos

Com essa opção ligada, nenhum caractere se repete. Como isso só é possível enquanto o comprimento não passar do tamanho do alfabeto, o gerador de string aleatória limita o comprimento sozinho e mostra o máximo.

Gerar em lote

Aumente a quantidade até 100. A lista pode ser copiada com um clique ou baixada como arquivo de texto, o jeito mais rápido de preencher uma tabela de testes com valores de aparência realista.

Para que servem as strings aleatórias

Dados de teste

Preencher um banco de dados de testes com valores que claramente não são reais, mas que variam como os de produção. Com este gerador de strings aleatórias, é um passo só: gere em lote e baixe a lista.

Identificadores e códigos curtos

Referências de pedido, códigos de convite e chaves internas, quando você controla as duas pontas e quer um comprimento específico. Para códigos agrupados e formatados, o gerador de códigos aleatórios dá a forma por você.

Tokens e segredos

Um valor longo e seguro para URL, tirado de um gerador de strings aleatórias, serve como token de sessão ou como segredo para assinar webhooks. Para o que tem um formato convencional, prefira o gerador de chaves secretas (em inglês) ou o gerador de chaves de API (em inglês).

Quando usar uma ferramenta específica

Use o gerador de senhas quando uma pessoa for guardar o valor num gerenciador de senhas, e o gerador de UUID (em inglês) quando outro sistema precisar reconhecer o formato.

Recorra a este gerador de strings aleatórias quando nenhuma dessas convenções se aplicar e a forma depender só de você.

Perguntas frequentes

Este gerador de strings aleatórias é gratuito?

Sim, sem conta e sem limite de strings. Não existe versão paga nem nada em que se cadastrar.

As strings são geradas num servidor?

Não. Elas são criadas no seu navegador com a API Web Crypto e nunca são enviadas. Você pode conferir abrindo o painel de rede do navegador enquanto gera, ou se desconectando da internet e tentando de novo.

Posso usá-las como senhas ou chaves de API?

O acaso é criptograficamente seguro, então, tecnicamente, sim. Mas uma ferramenta específica dá valores de partida melhores: o gerador de senhas garante a mistura de tipos de caracteres, e o gerador de chaves de API acrescenta os prefixos e codificações de que essas chaves costumam precisar.

Qual deve ser o comprimento de uma string aleatória?

Depende do conjunto de caracteres. 32 caracteres alfanuméricos carregam cerca de 191 bits, e 32 hexadecimais, exatamente 128. Para qualquer valor sensível, 128 bits é a referência habitual.

O que faz a opção “Sem caracteres repetidos”?

Ela garante que cada caractere apareça no máximo uma vez. O comprimento fica então limitado ao tamanho do seu conjunto, porque não dá para tirar 20 caracteres únicos de um alfabeto de 16. Este gerador de strings aleatórias ajusta o comprimento máximo para você quando a opção é ligada.

Posso usar o meu próprio conjunto de caracteres?

Sim. Escreva os caracteres no campo de conjunto próprio e só eles serão usados, sem levar em conta as opções. Os repetidos são eliminados para que todos mantenham a mesma chance. Dá para incluir o ç ou letras acentuadas, mas numa URL eles terão de ser codificados.

O resultado é realmente uniforme?

Sim. Os caracteres são escolhidos por amostragem por rejeição, e não por uma operação de módulo. Tomar um byte aleatório módulo 62 faria os oito primeiros caracteres saírem 25% mais vezes que o resto, porque 256 não se divide exatamente por 62.

Qual a diferença para um UUID?

Um UUID tem uma estrutura fixa de 128 bits e um formato padrão, então outros sistemas o reconhecem e sabem lê-lo. Uma string aleatória tem o comprimento e o alfabeto que você escolher: é flexível, mas não diz sozinha o que é.

Mais geradores gratuitos

Todas as ferramentas deste site funcionam no seu navegador, sem conta e sem limites. As de chaves e segredos e a de UUID, por enquanto, só estão em inglês.

Metodologia

Atualizado em

Como a entropia é calculada

entropia = comprimento × log₂(tamanho do conjunto)

O tamanho do conjunto é o que está de fato em uso, depois das exclusões e da eliminação de repetidos, e não o máximo teórico. Sem caracteres repetidos, a fórmula muda, porque cada caractere sai de um conjunto que vai diminuindo.

sem repetidos: log₂(n) + log₂(n−1) + … + log₂(n−comprimento+1)

Como os caracteres são escolhidos

Neste gerador de strings aleatórias, cada caractere vem de crypto.getRandomValues() por amostragem por rejeição. A máscara é ajustada à menor potência de dois que cobre o alfabeto, e qualquer valor que caia fora é descartado e sorteado de novo: a rejeição nunca passa de 50% e a distribuição é exatamente uniforme.

A alternativa ingênua, randomByte % tamanho, favorece o começo do alfabeto em até 25% com um conjunto de 62 caracteres. A figura acima mostra a diferença.

As cores da tabela de entropia

As células abaixo de 64 bits ficam em vermelho, as de 64 a menos de 128 em âmbar e as de 128 ou mais em verde-azulado. 64 bits é onde começa o nível “Razoável” do medidor deste site, e 128 é a referência habitual para valores sensíveis.