Skip to content

Gerador de Segredo JWT — HS256/384/512

Gere um segredo JWT forte e correto pela RFC para HS256/384/512 — 100% no navegador, nunca enviado a um servidor. base64url, base64 ou hex; copie para o .env.

Sem rastreamento Roda no navegador Grátis
Seu segredo é gerado localmente com crypto.getRandomValues e nunca é enviado, registrado ou armazenado. Ele permanece neste dispositivo.
16 64

Comandos de CLI equivalentes

Revisado quanto à correção do comprimento de chave da RFC 7518 §3.2, à precisão das codificações da RFC 4648 entre base64url / base64 / hex, ao fornecimento por CSPRNG (crypto.getRandomValues, nunca Math.random), à privacidade sem-rede/sem-armazenamento do segredo gerado e à acessibilidade (controles rotulados, mascaramento mostrar/ocultar, anúncios para leitores de tela ao gerar e copiar). — Equipe de Ferramentas de Segurança da Go Tools · Jun 16, 2026

O Que É um Gerador de Segredo JWT?

Um gerador de segredo JWT produz a chave de assinatura aleatória que um JSON Web Token assinado por HMAC usa para provar que não foi adulterado. Quando você assina um token com HS256, HS384 ou HS512, o algoritmo executa o HMAC sobre o cabeçalho e o payload do token usando um único segredo compartilhado; o verificador recomputa o mesmo HMAC com o mesmo segredo e aceita o token apenas se as assinaturas coincidirem. Toda a segurança desse esquema repousa sobre o segredo ser longo e imprevisível — que é exatamente o que esta ferramenta cria: uma string aleatória de alta entropia, gerada no seu navegador, dimensionada corretamente para o algoritmo que você escolhe.

Vale ser preciso sobre o que esta ferramenta faz e não faz. Ela gera a chave secreta — o valor que você coloca na sua variável de ambiente JWT_SECRET — não um token finalizado. Se você quer montar um cabeçalho e um payload e assiná-los em um JWT real, essa é a tarefa do Codificador JWT; para desmontar um token existente e verificar sua assinatura, use o Decodificador JWT. Pense no segredo como a chave e no codificador como a fechadura que ela opera: você gera a chave uma vez, armazena-a com segurança e a reutiliza para assinar e verificar muitos tokens.

Quão longa deve ser a chave? A resposta é fixada pela especificação, não pela preferência. A RFC 7518 §3.2 — o padrão JSON Web Algorithms — exige que uma chave HMAC seja pelo menos tão grande quanto a saída do hash: "Uma chave do mesmo tamanho que a saída do hash (por exemplo, 256 bits para HS256) ou maior DEVE ser usada." Isso dá uma tabela limpa que o gerador segue automaticamente:

| Algoritmo | HMAC | Mín. bytes | Mín. bits | hex chars | base64 chars | base64url chars | |-----------|------|-----------|----------|-----------|--------------|-----------------| | HS256 | HMAC-SHA-256 | 32 | 256 | 64 | 44 | 43 | | HS384 | HMAC-SHA-384 | 48 | 384 | 96 | 64 | 64 | | HS512 | HMAC-SHA-512 | 64 | 512 | 128 | 88 | 86 |

As contagens de caracteres vêm das codificações RFC 4648 desses comprimentos de bytes: hex dobra a contagem de bytes; base64 expande por 4⁄3 com preenchimento; base64url descarta o preenchimento, então uma chave de 32 bytes tem 43 caracteres base64url em vez de 44. base64url é a codificação nativa do JWT — alfabeto seguro para URL, sem preenchimento — que é por que é a saída padrão aqui; um segredo em base64url pode ficar em um cabeçalho, uma URL ou um valor de configuração sem escape.

A aleatoriedade é a parte que você não pode comprometer. Este gerador extrai seus bytes de crypto.getRandomValues, o gerador de números pseudoaleatórios criptograficamente seguro do navegador, a mesma primitiva que sustenta a geração de chaves do Web Crypto. Ele nunca usa Math.random, que é rápido, porém previsível e completamente inadequado para uma chave de assinatura — um RNG previsível significa um segredo adivinhável, e um segredo adivinhável significa tokens forjáveis. Como a verificação HMAC acontece localmente com o segredo compartilhado, um atacante que captura um token pode quebrar por força bruta uma chave fraca offline sem limite de taxa; ferramentas como hashcat (modo 16500) e jwt_tool existem precisamente para fazer isso. Uma chave aleatória de 32 bytes com entropia completa, por outro lado, está computacionalmente fora de alcance. A lição é direta: nunca use uma senha, uma palavra de dicionário ou uma string digitada à mão como segredo JWT — gere uma aleatória.

Por fim, gerar a chave do lado do cliente é em si uma propriedade de segurança. Um segredo de assinatura nunca deve ser transmitido a terceiros, nem mesmo ao site que ajuda você a criá-lo. Cada byte aqui é produzido e codificado no seu navegador; nada é enviado, registrado ou armazenado. Quando você estiver pronto para distribuir a chave, o botão Copy for .env entrega uma linha JWT_SECRET=…, e se você precisar dela dobrada em uma configuração maior, o conversor JSON para .env pode ajudar. Gere, copie, armazene-a em um gerenciador de segredos — e gire-a com um cabeçalho kid e janelas de validade sobrepostas quando chegar a hora.

// The secret you generate here goes straight into your signing code.
// Node.js with jsonwebtoken — the JWT_SECRET env var holds the key.
import jwt from 'jsonwebtoken';

const secret = process.env.JWT_SECRET; // e.g. base64url value from this tool

// Sign a token with HS256 (HMAC-SHA-256).
const token = jwt.sign({ sub: 'user-42', role: 'member' }, secret, {
  algorithm: 'HS256',
  expiresIn: '15m'
});

// Verify it — pin the algorithm to a whitelist; never trust the token's alg.
const payload = jwt.verify(token, secret, { algorithms: ['HS256'] });

// ---------------------------------------------------------------
// Python with PyJWT — same secret, same algorithm pinning.
// import jwt
// token = jwt.encode({"sub": "user-42"}, key, algorithm="HS256")
// payload = jwt.decode(token, key, algorithms=["HS256"])  # whitelist!

// ---------------------------------------------------------------
// Equivalent-strength CLI generation (32 bytes for HS256):
//   openssl rand -base64 32
//   node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"
//   python -c "import secrets; print(secrets.token_urlsafe(32))"

Recursos Principais

Comprimento de Chave Ciente do Algoritmo

Escolha HS256, HS384 ou HS512 e o gerador define automaticamente o tamanho mínimo de chave da RFC 7518 §3.2 — 32, 48 ou 64 bytes. Você pode solicitar uma chave mais longa, mas nunca pode provisionar acidentalmente uma subdimensionada que viole a especificação ou que uma biblioteca estrita se recuse a assinar.

Três Formatos de Saída Seguros para Texto

Obtenha os mesmos bytes aleatórios como base64url (a codificação nativa, segura para URL e sem preenchimento do JWT — o padrão), base64 padrão ou hex, mostrados lado a lado. base64url é o padrão mais seguro para um JWT_SECRET; troque de formato quando um carregador ou biblioteca específico esperar outro. A entropia é idêntica entre os três.

Aleatoriedade Criptograficamente Segura

Cada segredo é extraído de crypto.getRandomValues, o CSPRNG do navegador e a primitiva por trás da geração de chaves do Web Crypto. Nunca Math.random. Isso garante uma chave de entropia completa sem estrutura previsível — a propriedade que coloca o segredo além do alcance da força bruta offline.

Copy for .env com Um Clique

Copy for .env envolve o valor na atribuição convencional JWT_SECRET=…, uma linha, sem aspas — pronta para colar em um arquivo .env, um Docker secret ou uma variável de CI sem digitar à mão o nome da chave. O Copiar simples pega o segredo bruto quando você precisa apenas do valor.

Comandos de CLI Equivalentes

Um painel imprime os one-liners correspondentes de openssl rand, Node crypto.randomBytes e Python secrets para o algoritmo selecionado, para que você possa reproduzir uma chave de força equivalente em um script de provisionamento ou um Dockerfile. A maioria das ferramentas concorrentes omite isso; aqui já vem embutido.

Mascaramento Mostrar / Ocultar

O segredo fica mascarado por padrão para que permaneça fora da tela durante uma demonstração, um tutorial ou um compartilhamento de tela. Revele-o com o ícone de olho apenas quando estiver pronto para copiar. As ações de Copiar sempre colocam o segredo real na área de transferência, esteja ele visível ou oculto.

100% Privado, Só no Navegador

O segredo é gerado, codificado e exibido inteiramente no seu dispositivo. Sem requisições de rede, sem registro de logs, sem armazenamento — verifique em DevTools → Rede. Uma chave de assinatura nunca deve chegar a terceiros, e aqui ela nunca chega, que é toda a razão para gerá-la do lado do cliente.

Disponível em 15 Idiomas

A interface completa — rótulos, instruções e orientações — está localizada em 15 idiomas, então a ferramenta é utilizável e o aconselhamento de segurança é claro não importa onde sua equipe trabalhe.

Exemplos Resolvidos

Gerar um segredo HS256 em base64url (o padrão)

Algorithm: HS256 · Format: base64url
3sJ9aFq2kP7mWcZ1xL0nVtRbYdGhU8eAoI4QpNlKj0

O HS256 assina com HMAC-SHA-256, então a RFC 7518 §3.2 exige uma chave de pelo menos 32 bytes (256 bits). O gerador extrai 32 bytes aleatórios criptograficamente seguros de crypto.getRandomValues e os codifica como base64url — o alfabeto seguro para URL e sem preenchimento que o próprio JWT usa. 32 bytes viram uma string base64url de 43 caracteres. Solte o valor diretamente em JWT_SECRET. Cada clique gera um novo segredo; nada é igual duas vezes.

Gerar um segredo HS512 (64 bytes / 512 bits)

Algorithm: HS512 · Format: base64url
k2Lp9XqA0mNbVcZ7rT4wYsHfGjUe8RoIdPlNkBvM3xQ1aWtCyZuS6FhEgJ (86 chars)

O HS512 usa HMAC-SHA-512, cuja saída de hash é de 64 bytes, então a RFC 7518 §3.2 exige uma chave de pelo menos 64 bytes (512 bits). A ferramenta detecta o algoritmo e aumenta a contagem de bytes automaticamente — você nunca precisa lembrar do mínimo. 64 bytes aleatórios codificam para uma string base64url de 86 caracteres, 88 caracteres em base64 padrão ou 128 caracteres hex. Escolher um algoritmo mais longo aqui é a forma de um clique de provisionar um segredo de maior entropia.

Copiar o segredo como uma linha de .env

Click "Copy for .env"
JWT_SECRET=3sJ9aFq2kP7mWcZ1xL0nVtRbYdGhU8eAoI4QpNlKj0

Copy for .env envolve o valor gerado na atribuição convencional JWT_SECRET=… para que você possa colá-lo diretamente em um arquivo .env, um Docker secret ou uma variável de CI sem digitar à mão o nome da chave. O valor fica em uma única linha sem aspas ao redor — exatamente o que os carregadores no estilo dotenv esperam. Precisa da variável embutida em uma configuração mais ampla? Combine isto com o conversor JSON para .env linkado abaixo.

Reproduzir o segredo a partir de uma CLI (força equivalente)

Show the CLI command
openssl rand -base64 32

O painel de CLI imprime os comandos openssl, Node e Python que extraem o mesmo número de bytes aleatórios seguros para o algoritmo selecionado — openssl rand -base64 32 para HS256, …48 para HS384, …64 para HS512. A saída é um segredo de força equivalente, não uma string byte a byte idêntica: o openssl emite base64 padrão com preenchimento enquanto esta ferramenta usa base64url por padrão, então os alfabetos e os caracteres finais diferem. Use o que se encaixar no seu script de provisionamento; a entropia é a mesma.

Mostrar e ocultar o segredo

Toggle the eye icon
•••••••••••••••••••••••••••••••••••••••••••  ↔  3sJ9aFq2kP7m…

O segredo fica mascarado por padrão para que não possa ser espiado por cima do ombro nem capturado por uma gravação de tela durante uma demonstração ou compartilhamento de tela. Clique no ícone de olho para revelá-lo quando estiver pronto para copiar e oculte-o novamente depois. Copiar e Copy for .env funcionam quer o valor esteja visível ou mascarado — o segredo real é sempre o que vai parar na sua área de transferência, nunca os pontos.

Como Usar o Gerador de Segredo JWT

  1. 1

    Escolha o algoritmo de assinatura

    Selecione HS256, HS384 ou HS512. O gerador aplica instantaneamente o comprimento mínimo de chave da RFC 7518 §3.2 para aquela variante HMAC — 32, 48 ou 64 bytes — para que você nunca tenha que procurar o número nem arriscar uma chave subdimensionada.

  2. 2

    Escolha o formato de saída

    base64url é o padrão — a codificação nativa, segura para URL e sem preenchimento do JWT. Mude para base64 padrão se um carregador esperar, ou hex quando um sistema só aceitar caracteres 0–f. Todos os três codificam os mesmos bytes aleatórios com entropia idêntica.

  3. 3

    Revele e copie o segredo

    O segredo fica mascarado por padrão para mantê-lo fora da tela durante uma demonstração ou compartilhamento de tela. Clique no ícone de olho para revelá-lo, depois Copiar para pegar o valor bruto ou Copy for .env para copiar uma linha JWT_SECRET=… pronta para um arquivo .env ou variável de CI.

  4. 4

    Gere novamente conforme necessário

    Clique em Gerar novamente para um segredo novo e independente extraído de crypto.getRandomValues. Gere um por ambiente — nunca reutilize a mesma chave de assinatura entre desenvolvimento, staging e produção.

  5. 5

    Use o equivalente de CLI ou parta para a assinatura

    O painel de CLI mostra os one-liners correspondentes de openssl, Node e Python para provisionamento via script. Com seu segredo em mãos, assine um token com o Codificador JWT e confirme a assinatura com o Decodificador JWT.

Erros Comuns de Segredo JWT

Usou uma senha ou frase curta como o segredo

Uma string escolhida por humanos tem entropia muito baixa para uma chave de assinatura e pode ser recuperada offline com um ataque de dicionário ou de força bruta, após o qual qualquer token pode ser forjado. Gere um segredo aleatório de entropia completa em vez disso.

✗ Incorreto
JWT_SECRET=mySuperSecret123  →  low entropy, brute-forceable
✓ Correto
JWT_SECRET=3sJ9aFq2kP7mWcZ1xL0nVtRbYdGhU8eAoI4QpNlKj0  →  32 random bytes

Chave mais curta do que o algoritmo exige

A RFC 7518 §3.2 exige uma chave HMAC pelo menos tão longa quanto a saída do hash. Uma chave de 16 bytes para HS256 está abaixo do piso de 32 bytes — ela enfraquece a assinatura e algumas bibliotecas a rejeitam de imediato.

✗ Incorreto
16-byte key with HS256  →  below the 32-byte minimum
✓ Correto
32-byte key with HS256  →  meets RFC 7518 §3.2

Gerou a chave com Math.random

Math.random não é criptograficamente seguro — sua saída é previsível, então um segredo construído a partir dele é adivinhável e os tokens que ele assina são forjáveis. Uma chave de assinatura deve vir de um CSPRNG como crypto.getRandomValues.

✗ Incorreto
Math.random()-based key  →  predictable, unsafe
✓ Correto
crypto.getRandomValues key  →  full entropy

Recodificou o segredo antes de assinar

Armazene e forneça a string exata que a ferramenta produziu. Decodificar de base64 para bytes em um serviço mas tratá-la como uma string literal em outro dá às duas partes chaves diferentes, e toda verificação de assinatura falha.

✗ Incorreto
Service A: raw string · Service B: base64-decoded  →  signatures never match
✓ Correto
Both services use the identical stored string  →  signatures verify

Reutilizou o mesmo segredo em todos os ambientes

Um JWT_SECRET compartilhado por dev, staging e produção significa que um vazamento em qualquer lugar forja tokens em todos os lugares e a rotação se torna tudo ou nada. Provisione um segredo distinto por ambiente.

✗ Incorreto
Same JWT_SECRET in dev, staging, prod  →  one leak breaks all
✓ Correto
A unique secret per environment  →  blast radius contained

Confiou no alg do token na verificação

Deixar o verificador aceitar qualquer algoritmo que o token declare habilita as falsificações alg:none e de confusão HS/RS. Passe uma lista branca explícita de algoritmos por mais forte que seja o segredo.

✗ Incorreto
jwt.verify(token, secret)  →  accepts the token's alg
✓ Correto
jwt.verify(token, secret, { algorithms: ['HS256'] })  →  pinned

Quem Usa Esta Ferramenta

Provisionar um JWT_SECRET para um Novo Serviço
Subindo uma API que emite tokens assinados por HMAC? Escolha o algoritmo que sua biblioteca usa, copie o segredo como uma linha JWT_SECRET=… e solte-o no ambiente do serviço. Gere uma chave distinta para desenvolvimento, staging e produção — nunca compartilhe um segredo entre ambientes.
Girar um Segredo Comprometido ou Antigo
Quando uma chave é suspeita de vazamento ou simplesmente está na hora de rotação, gere um novo segredo aqui, atribua a ele um novo kid e implante-o com uma janela de sobreposição para que tokens ativos continuem verificando até expirarem. Em um comprometimento confirmado, gire imediatamente e remova a chave antiga do conjunto aceito.
Substituir uma Chave Fraca ou Digitada à Mão
Herdou uma base de código cujo JWT_SECRET é uma frase curta ou um valor de exemplo copiado? Essa chave é quebrável por força bruta offline. Gere uma substituição de 32 bytes com entropia completa, troque-a por trás de uma janela de rotação e feche a brecha de falsificação de token antes que seja explorada.
Gerar Chaves via Script em um Pipeline
Precisa da chave criada em CI ou em um Dockerfile em vez de à mão? Use o one-liner de openssl, Node ou Python do painel de CLI para cunhar um segredo de força equivalente dentro do seu script de provisionamento, e use esta página para entender os comprimentos de bytes e as codificações que cada comando produz.
Ensinar Assinatura JWT com Segurança
Guie uma equipe por como o HS256 funciona sem nunca expor uma chave real de produção — gere um segredo descartável na tela (mascarado até você revelá-lo), assine um token de exemplo com o Codificador JWT e verifique-o com o Decodificador JWT para que todo o ciclo de assinar e verificar fique visível.
Comparar Tamanhos de Chave HS256, HS384 e HS512
Decidindo qual variante HMAC padronizar? Alterne entre os algoritmos para ver como o comprimento de chave exigido e a string codificada crescem — 43, 64 e 86 caracteres base64url — e escolha o tradeoff entre força e tamanho de token que se encaixa no seu sistema antes de comprometê-lo na configuração.
Gerar Chaves para Desenvolvimento Local
Precisa de um segredo rápido e válido para colocar um fluxo de autenticação local em funcionamento? Gere um em um clique, copie-o para o .env e você está desbloqueado — com uma chave de CSPRNG real em vez de um placeholder que você esquecerá de substituir antes do deploy.

Como o Gerador Funciona

crypto.getRandomValues (CSPRNG)
Os segredos são gerados preenchendo um Uint8Array com crypto.getRandomValues, o gerador de números pseudoaleatórios criptograficamente seguro do Web Crypto. É a mesma fonte de entropia que sustenta a geração de chaves do Web Crypto. Math.random nunca é usado em lugar algum — ele é estatisticamente previsível e impróprio para qualquer chave criptográfica.
Dimensionamento de Chave da RFC 7518 §3.2
A contagem de bytes por algoritmo segue a exigência do JSON Web Algorithms de que uma chave HMAC seja pelo menos do tamanho da saída do hash: 32 bytes para HS256 (SHA-256), 48 para HS384 (SHA-384), 64 para HS512 (SHA-512). Selecionar o algoritmo define o mínimo; o gerador não emitirá uma chave abaixo do piso da especificação.
Codificações RFC 4648 (base64url / base64 / hex)
Os bytes brutos são codificados com os alfabetos da RFC 4648. base64url usa o alfabeto seguro para URL sem preenchimento (32 bytes → 43 chars), o base64 padrão usa preenchimento +, / e = (→ 44 chars), e hex escreve dois caracteres por byte (→ 64 chars). Trocar de formato recodifica os mesmos bytes — a entropia subjacente é inalterada.
Por que base64url É o Padrão
Os componentes do JWT são eles mesmos codificados em base64url, e o alfabeto seguro para URL e sem preenchimento significa que um segredo em base64url nunca precisa de escape em um cabeçalho, uma URL ou um arquivo de configuração. Os +, / e = finais do base64 padrão podem quebrar nesses contextos, então base64url é o padrão conservador para um JWT_SECRET.
Formatação do Copy-for-.env
Copy for .env emite JWT_SECRET= em uma única linha sem aspas ao redor — a forma que os carregadores no estilo dotenv analisam sem modificação. O segredo bruto nunca inclui caracteres que exigiriam aspas em um arquivo .env, então a linha é segura para colar como está.
Comandos de CLI de Força Equivalente, Não Byte a Byte Idênticos
Os comandos openssl rand -base64 N, Node randomBytes(N).toString('base64url') e Python secrets.token_urlsafe(N) do painel de CLI todos extraem N bytes aleatórios seguros para o algoritmo escolhido. Eles produzem chaves de força equivalente, não a mesma string — o openssl emite base64 padrão com preenchimento, então o alfabeto e os caracteres finais diferem do padrão base64url desta ferramenta.

Boas Práticas de Segredo JWT

Combine o Comprimento da Chave com o Algoritmo
Use pelo menos 32 bytes para HS256, 48 para HS384 e 64 para HS512, como exige a RFC 7518 §3.2. Este gerador faz isso por você, mas se você dimensionar uma chave à mão, nunca fique abaixo do comprimento da saída do hash — uma chave HMAC subdimensionada enfraquece a assinatura e pode ser rejeitada por bibliotecas estritas.
Sempre Gere com um CSPRNG, Nunca uma Senha
Um segredo JWT é uma credencial de máquina que ninguém precisa memorizar, então gaste a entropia completa: use uma chave aleatória criptograficamente segura, não uma frase-senha, uma palavra de dicionário ou uma string digitada à mão. Segredos escolhidos por humanos são o alvo mais fácil para os ataques offline de força bruta que as ferramentas de quebra de JWT automatizam.
Use um Segredo Único por Ambiente
Desenvolvimento, staging e produção devem cada um ter seu próprio JWT_SECRET. Compartilhar uma chave significa que um vazamento em um ambiente de baixo risco forja tokens em todos os lugares, e torna a rotação tudo ou nada. Gere um segredo separado aqui para cada ambiente e armazene cada um em seu próprio escopo de gerenciador de segredos.
Fixe o Algoritmo Quando Você Verifica
No lado verificador, sempre passe uma lista branca explícita de algoritmos — algorithms: ['HS256'] no jsonwebtoken, algorithms=["HS256"] no PyJWT — e nunca confie no campo alg dentro do token. Aceitar o algoritmo autodeclarado do token habilita os clássicos ataques de confusão de alg e falsificação alg:none, por mais forte que seja seu segredo.
Gire com um Cabeçalho kid e Chaves Sobrepostas
Marque os tokens assinados com um identificador de chave (kid) e publique as chaves ativas por meio de um endpoint JWKS para que você possa girar sem indisponibilidade: assine novos tokens com a nova chave enquanto ainda aceita a antiga até que seus tokens expirem. Em uma suspeita de comprometimento, pule a sobreposição e revogue a chave antiga imediatamente.

Perguntas Frequentes

Meu segredo JWT gerado é enviado para o seu servidor?
Não. O segredo é gerado inteiramente no seu navegador com crypto.getRandomValues, o gerador de números aleatórios criptograficamente seguro da plataforma. Os bytes são produzidos no seu dispositivo, codificados localmente e mostrados apenas a você. Nada é enviado, nada é registrado, nada é gravado em disco e nada é enviado a terceiros — abra as DevTools → Rede e você verá zero requisições disparar quando clicar em Gerar novamente ou Copiar. Isso significa que uma chave que você gera aqui é só sua no instante em que aparece; nenhum servidor jamais a observa. Esse é todo o objetivo de gerar um segredo de assinatura do lado do cliente em vez de em um site que poderia, em princípio, guardar uma cópia de cada chave que distribui.
Como gero um segredo JWT seguro?
Três passos. Primeiro, escolha o algoritmo de assinatura que sua aplicação usa — HS256, HS384 ou HS512 — e o gerador dimensiona imediatamente a chave para o mínimo da RFC 7518 §3.2 daquela variante (32, 48 ou 64 bytes), então você nunca escolhe um número à mão nem arrisca uma chave subdimensionada. Segundo, deixe a codificação em base64url (o formato nativo e seguro para URL do JWT) ou mude para base64 ou hex se o seu carregador de configuração esperar um desses. Terceiro, clique em Copiar — ou Copy for .env para obter uma linha JWT_SECRET=… pronta para colar — e armazene o valor em um gerenciador de segredos ou variável de ambiente, nunca no controle de versão. Como cada byte vem de crypto.getRandomValues, uma chave de 32 bytes já carrega 256 bits de entropia, o que está muito além do alcance dos ataques de força bruta offline que quebram segredos escolhidos por humanos. Prefere a linha de comando? A ferramenta também imprime one-liners equivalentes de openssl, Node e Python que você pode colar em um terminal.
Qual deve ser o comprimento de um segredo JWT HS256?
Pelo menos 32 bytes (256 bits). A RFC 7518 §3.2 — a especificação JSON Web Algorithms — afirma que para assinaturas HMAC "uma chave do mesmo tamanho que a saída do hash (por exemplo, 256 bits para HS256) ou maior DEVE ser usada." O HS256 assina com HMAC-SHA-256 (hash de 256 bits), então a chave mínima é de 32 bytes; o HS384 usa HMAC-SHA-384 e precisa de pelo menos 48 bytes (384 bits); o HS512 usa HMAC-SHA-512 e precisa de pelo menos 64 bytes (512 bits). Este gerador escolhe o mínimo correto automaticamente quando você escolhe o algoritmo, e você pode solicitar uma chave mais longa. Uma chave mais curta não é apenas mais fraca — ela viola a especificação e algumas bibliotecas se recusarão a assinar com ela.
Qual é a diferença entre base64url, base64 e hex, e qual devo escolher?
Todos os três codificam os mesmos bytes aleatórios; diferem apenas no alfabeto de caracteres, não na entropia. base64url é a codificação nativa do JWT — usa um alfabeto seguro para URL (- e _ em vez de + e /) e omite o preenchimento, então nunca precisa de escape em um token, uma URL ou um cabeçalho. É por isso que é o padrão aqui. O base64 padrão usa +, / e preenchimento =; escolha-o quando um carregador de configuração ou biblioteca esperar especificamente o base64 clássico. hex (base16) escreve cada byte como dois caracteres 0–f, produzindo uma string mais longa, porém inequívoca, que é útil quando um sistema rejeita caracteres não alfanuméricos. Para uma variável de ambiente JWT_SECRET, base64url é o padrão mais seguro; qualquer um dos três funciona desde que você armazene a string exata e a forneça de volta inalterada à sua biblioteca de assinatura.
Um segredo JWT fraco pode ser quebrado?
Sim — e este é o maior risco com JWTs assinados por HMAC. Como o HS256/384/512 usa um único segredo compartilhado, qualquer um que tenha um token pode executar um ataque offline de força bruta ou de dicionário contra a assinatura sem limite de taxa e sem contato com o servidor. Ferramentas como hashcat (o modo 16500 mira JWT) e jwt_tool são feitas sob medida para isso; em GPUs comuns um segredo de baixa entropia pode tipicamente cair em segundos a horas, e uma palavra de dicionário ou uma senha vazada pode cair quase imediatamente. Uma chave aleatória de 32 bytes com entropia completa deste gerador está muito além do alcance da força bruta. Uma vez que um atacante recupera o segredo, ele pode forjar qualquer token — inclusive um que reivindica privilégios de administrador — então a força do segredo não é opcional. Gere a chave de assinatura com um CSPRNG, nunca uma string escolhida por humanos. Para um tratamento mais aprofundado dos ataques de segredo fraco, confusão de alg e replay de token, veja nosso guia de boas práticas de segurança JWT.
Posso usar uma senha como meu segredo JWT?
Você pode, mas não deveria. Uma senha memorizável por humanos — mesmo uma frase-senha longa — carrega muito menos entropia do que 32 bytes aleatórios, o que a torna um alvo realista para os ataques offline de força bruta e de dicionário descritos acima. Segredos JWT são credenciais máquina a máquina; ninguém precisa memorizá-los, então não há razão para trocar entropia por memorabilidade. Gere um segredo aleatório aqui, armazene-o em um gerenciador de segredos ou variável de ambiente e deixe sua aplicação lê-lo. Se você precisa de credenciais memorizáveis para outro propósito, isso é tarefa de um Gerador de Senhas ou, para armazenar senhas de usuários, de um hash de mão única do Gerador bcrypt — não de uma chave de assinatura de token.
Como giro um segredo JWT sem quebrar tokens ativos?
Gire com sobreposição em vez de um corte abrupto. Adicione um identificador de chave (o cabeçalho kid) aos tokens que você assina para que um verificador saiba contra qual segredo conferir, e publique suas chaves ativas — tipicamente por meio de um endpoint JWKS que seus serviços leem. Para girar: gere um novo segredo aqui, comece a assinar novos tokens com o novo kid enquanto ainda aceita a chave anterior para verificação, e só aposente a chave antiga depois que cada token assinado com ela tiver expirado. Essa janela de sobreposição significa que nenhuma sessão válida é invalidada no meio do caminho. Em uma suspeita de comprometimento, pule a sobreposição graciosa: gire imediatamente, remova a chave antiga do conjunto aceito e force a reautenticação para que tokens vazados parem de verificar de uma vez.
Como uma chave HMAC (HS*) difere de uma chave RSA ou ECDSA (RS*/ES*)?
Elas resolvem o mesmo problema com modelos de chave opostos. HS256/384/512 são algoritmos HMAC: usam um único segredo simétrico — o tipo que esta ferramenta gera — que tanto assina quanto verifica, então toda parte que pode verificar um token também pode forjá-lo. Isso é simples, rápido e ideal quando um único serviço emite e confere seus próprios tokens. RS* (RSA) e ES* (ECDSA) são assimétricos: usam um par de chaves, em que uma chave privada assina e uma chave pública separada apenas verifica. Você entrega a chave pública a qualquer um que precise validar tokens sem nunca expor a chave de assinatura — a escolha certa quando um provedor de identidade emite tokens que muitos serviços independentes verificam. Este gerador produz apenas segredos simétricos HMAC. Para montar e assinar um token real com a chave que você gera, use o Codificador JWT; para inspecionar e verificar um, use o Decodificador JWT.

Ferramentas relacionadas

Ver todas as ferramentas →

Gerador e Verificador de Hash Bcrypt

Ferramentas de Segurança

Gere e verifique hashes bcrypt de senha online — custo ajustável, prefixos $2b$/$2a$/$2y$. 100% no seu navegador; sua senha nunca é enviada.

Decodificador JWT

Ferramentas de Segurança

Decodifique tokens JWT online com nosso decodificador JWT grátis. Inspecione cabeçalho, carga útil, assinatura, expiração e reivindicações. 100% navegador — seu token nunca sai do dispositivo. Sem cadastro, sem rastreio.

Codificador e Gerador JWT

Ferramentas de Segurança

Gerador e codificador JWT online grátis. Monte o cabeçalho e a carga útil, assine com HS256, RS256 ou ES256 instantaneamente. 100% no navegador — seu segredo e sua chave nunca saem do dispositivo.

Gerador de Hash MD5 e Ferramenta de Checksum

Ferramentas de Segurança

Gere hashes MD5, SHA-256, SHA-1 e SHA-512 online gratuitamente. Faça hash de texto ou arquivos no navegador, verifique checksums e copie resultados. Sem cadastro necessário.

Gerador de Senhas Aleatórias — Forte e Seguro

Ferramentas de Segurança

Gere senhas aleatórias fortes instantaneamente — grátis, sem cadastro, 100% no navegador. Personalize comprimento e tipos de caracteres, gere em lote até 50. Medidor de força com análise de entropia.

Gerador de Hash SHA-1 (160 bits — Legado)

Ferramentas de Segurança

Gere hashes SHA-1 no navegador — saída hex de 40 caracteres, sem upload. Ferramenta legada para impressões digitais do Git, verificação de certificados antigos e auditorias de migração. Dados nunca saem do dispositivo.