PK Systems PK Systems
Codificadores e decodificadores

Assinador e Verificador de JWT

Assine e verifique JSON Web Tokens no navegador com HS256/HS384/HS512, RS256 e ES256. Gere chaves RSA e ECDSA na hora.

Assinador e Verificador de JWT

HS* usa segredo compartilhado; RS256 e ES256 usam par de chaves assimétrico.

O campo alg sincroniza automaticamente com o seletor acima.

Claims padrão: sub, iss, aud, iat, exp, nbf, jti.

Para produção, use 256+ bits de entropia aleatória. Nunca reaproveite senhas.

JWT assinado


            
        

O que é um JWT?

Um JSON Web Token (JWT) é uma forma compacta e URL-safe de transportar claims entre duas partes. Tem três pedaços codificados em Base64URL e separados por pontos: um header que indica o algoritmo, um payload com claims em JSON e uma assinatura calculada sobre header.payload com uma chave. O receptor recalcula a assinatura e rejeita o token se não bater. JWTs são populares em autenticação stateless porque o servidor não guarda sessão — cada requisição carrega a própria prova. O lado ruim é que não dá para revogar um token sem uma lista de revogação extra, e qualquer segredo vazado compromete todo token assinado com ele. Esta ferramenta roda inteira no seu dispositivo — seus segredos, chaves de assinatura e tokens nunca saem da página, nunca vão para nossos servidores, e não são armazenados, indexados, registrados ou compartilhados. Essa garantia importa porque um único vazamento de segredo de assinatura JWT pode comprometer todas as contas de usuário para as quais ele emite tokens.

Como usar

Escolha o algoritmo do seu ambiente, cole header e payload (ou use os padrões como template) e clique em Assinar. Para RS256 e ES256 dá para gerar um par de chaves novo na própria página; para HS256 você fornece um segredo. Para verificar, mude o modo, cole o token e o segredo ou chave pública e clique em Verificar. Se a assinatura for válida, o payload decodificado aparece no veredito.

Dicas e armadilhas práticas

Sempre defina exp (expiração) em produção. Nunca aceite o algoritmo do header sem uma lista de permissões — o ataque clássico alg=none explora servidores que confiam cegamente. Rotacione chaves periodicamente, guarde chaves privadas em HSM ou cofre de segredos e trate segredos HMAC como senhas. Em apps web e mobile, prefira JWTs curtos com refresh tokens em cookies HttpOnly.

Algoritmos suportados

Alg Família Uso
HS256HMAC + SHA-256Serviços internos que compartilham um único segredo. Rápido e simples.
HS384HMAC + SHA-384Serviços internos que compartilham um único segredo. Rápido e simples.
HS512HMAC + SHA-512Serviços internos que compartilham um único segredo. Rápido e simples.
RS256RSA + SHA-256APIs públicas que distribuem a chave pública para verificação.
ES256ECDSA P-256 + SHA-256Como RS256, mas com assinaturas menores e curvas elípticas modernas.

Perguntas frequentes

Algo é enviado ao servidor de vocês?
Não. A assinatura e verificação acontecem totalmente no seu dispositivo usando a criptografia nativa do seu navegador. Seus segredos, chaves e tokens nunca saem da página, nunca vão para nossos servidores, e não são armazenados, indexados, registrados ou compartilhados.
Qual a diferença entre HS256 e RS256?
HS256 usa um segredo compartilhado para assinar e verificar — quem verifica também consegue assinar. RS256 usa um par RSA: a chave privada assina, a pública verifica, então quem verifica não tem como assinar.
Posso usar para chaves de produção?
Você pode gerar chaves de desenvolvimento aqui, mas chaves privadas de produção devem viver no seu KMS ou HSM. Colar uma chave real numa página web é um evento de segurança.
Por que meu token falha na verificação?
Causas comuns: algoritmo errado no seletor versus o do header, segredo/chave pública trocados, token expirado (exp) ou ainda não válido (nbf), payload alterado, ou copy-paste com espaço extra.
Qual codificação o payload usa?
O JWT serializa o payload em UTF-8 e depois aplica Base64URL. Chaves JSON são case-sensitive. Strings dentro do payload devem ser UTF-8.
JWTs são criptografados?
JWT padrão é assinado mas não criptografado — qualquer um decodifica o payload. Use JWE se precisar de confidencialidade, ou carregue dados sensíveis fora do token.