Gerador de tokens e chaves de API
Tokens criptograficamente seguros usando a Web Crypto API. UUID, hex, tokens Base64 de portador ou chaves de API com prefixo.
Um identificador RFC 4122 v4 de 128 bits, sendo 122 deles aleatórios. A escolha padrão para chaves primárias de banco de dados, IDs de requisição e tokens de correlação.
122 bits de entropia · gerado no seu navegador, nunca enviado a um servidor
Por que não usar Math.random()?
Math.random() é um gerador de números pseudoaleatórios — sua saída é previsível e não serve para tokens de segurança. Esta ferramenta usa crypto.getRandomValues(), a mesma API que está por trás da geração de chaves TLS e SSH.
Tipos de token explicados
UUID v4 é o padrão para IDs de banco de dados e tokens de correlação. Strings hexadecimais funcionam bem para tokens de sessão e nonces. Base64 é compacto para tokens de API. Chaves de API com prefixos (como sk_ ou vlt_) facilitam identificar e rotacionar credenciais vazadas.
Qual deve ser o comprimento de um token?
128 bits de entropia é o piso para qualquer coisa que proteja um acesso, e é o que o NIST SP 800-63B espera de um segredo gerado aleatoriamente. Isso equivale a 32 caracteres hexadecimais, 22 caracteres Base64 ou um UUID v4. Passar de 256 bits não traz ganho nenhum contra força bruta - só custa volume de log e tamanho de cabeçalho. O comprimento importa mais que o alfabeto: um token hex de 32 caracteres e um Base64 de 22 são igualmente difíceis de adivinhar.
Tokens de portador, tokens de acesso e chaves de API
Esses nomes descrevem como a credencial é usada, não como ela é gerada. Um token de portador concede acesso apenas por ser apresentado, e é por isso que o cabeçalho HTTP Authorization o carrega literalmente. Um token de acesso é um token de portador de vida curta, normalmente emitido por um fluxo OAuth. Uma chave de API é um token de portador de vida longa emitido para um serviço, não para uma pessoa. No momento da geração os três são a mesma coisa: uma string aleatória opaca e de alta entropia. Use hex ou Base64 para os dois primeiros e o modo de chave de API quando quiser um prefixo detectável.
Por que usar prefixo nas chaves de API?
GitHub, Stripe, OpenAI e Slack usam prefixo nas chaves (ghp_, sk_live_, xoxb_) por um motivo: assim os scanners de segredos reconhecem uma chave vazada só pela string, sem nenhum contexto ao redor. Suba uma chave com prefixo para um repositório público e o emissor consegue revogá-la em minutos. Uma string hex de 32 caracteres sozinha parece um hash de commit, então nada a detecta. Prefixos também deixam o ambiente óbvio de imediato, a defesa mais barata contra colar uma chave de produção numa configuração de staging.
Perguntas frequentes
Esses tokens são realmente aleatórios?
Sim. Todo token vem de crypto.getRandomValues(), o gerador de números aleatórios criptograficamente seguro do navegador, alimentado pelo pool de entropia do sistema operacional. É a mesma primitiva que gera as chaves de sessão TLS. Math.random(), que muitos geradores online ainda usam, é um gerador pseudoaleatório previsível e jamais deve produzir um token de segurança.
Meu token é enviado para o servidor de vocês?
Não. A geração acontece inteiramente no seu navegador usando a Web Crypto API. Abra a aba de rede e gere um token: nenhuma requisição é feita. Nada é registrado, armazenado ou transmitido. Se depois você decidir compartilhar o token, ele é criptografado no seu navegador antes de qualquer coisa sair da página.
Que comprimento devo usar para uma chave de API?
128 bits de entropia, que é exatamente o que o modo de chave de API desta ferramenta produz: seu prefixo mais 32 caracteres hexadecimais. Na prática é impossível de adivinhar e corresponde ao que Stripe, GitHub e AWS emitem. Só vá além disso se um requisito específico de conformidade exigir.
Qual a diferença entre um UUID v4 e um token hex aleatório?
Um UUID v4 é um token aleatório com formato fixo: 36 caracteres, quatro hifens e seis bits reservados para versão e variante, deixando 122 bits aleatórios. Use quando outra coisa espera esse formato, como uma coluna uuid de banco de dados. Use hex ou Base64 simples quando você só precisa de um segredo e o formato é escolha sua - fica mais curto para a mesma força.
Posso gerar vários tokens de uma vez?
Sim. Defina a quantidade como 5, 10 ou 25 e cada token é gerado de forma independente. Copiar tudo copia um por linha, o formato que a maioria dos scripts de seed, arquivos .env e gerenciadores de senha aceita para importação em massa.
Como envio um token para um colega com segurança?
Nem no Slack, nem por e-mail, nem em um ticket - esses guardam uma cópia indefinidamente, então quem ganhar acesso ao canal depois ganha acesso à credencial. Use Compartilhar com segurança para colocar o token atrás de um link criptografado e autodestrutivo: ele é criptografado no seu navegador, a chave viaja no fragmento da URL e nunca é enviada ao nosso servidor, e o segredo é destruído assim que é lido ou quando expira.
Precisa compartilhar um token com segurança?
Não cole tokens no Slack ou no e-mail. Envie por um link criptografado que se autodestrói e que só o destinatário pode abrir.