Cifra ROT18
Hello, World! 123 vira Uryyb, Jbeyq! 678 de uma só vez: as letras avançam 13 posições e os dígitos cinco, enquanto espaços e sinais ficam iguais. Repita o passo e o original volta. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- Hello, World! 123
- Resultado
- Uryyb, Jbeyq! 678
- Comprimento
- 17
- Letras giradas
- 10
- Dígitos girados
- 3
ROT18 é a cifra de rotação combinada que aplica ROT13 a cada letra latina e ROT5 a cada dígito decimal em uma única passagem. Letras A a Z e a a z avançam treze posições no alfabeto, de modo que Hello vira Uryyb, enquanto dígitos de zero a nove avançam cinco posições e 123 vira 678. Espaços, pontuação e outros caracteres ficam onde estão, o que mantém estrutura legível em strings de passatempos e rótulos leves. Como treze é metade de vinte e seis e cinco é metade de dez, aplicar ROT18 uma segunda vez desfaz a primeira: a mesma operação codifica e decodifica. Cole qualquer string não vazia e receba na hora o resultado transformado.
Como o ROT18 combina ROT13 em letras e ROT5 em dígitos
ROT18 não é um alfabeto separado; é o produto de duas rotações clássicas de meio anel aplicadas caractere a caractere. Para cada letra latina o algoritmo mapeia o caractere a um índice de zero a vinte e cinco dentro do seu caso, soma treze, toma o resto módulo vinte e seis e mapeia de volta a uma letra do mesmo caso. Isso é o ROT13 clássico: A vira N, N vira A, Hello vira Uryyb e Uryyb vira Hello de novo.
Para cada dígito ASCII o algoritmo mapeia zero a nove a um índice, soma cinco, toma o resto módulo dez e mapeia de volta: zero vira cinco, cinco vira zero, um dois três vira seis sete oito. Caracteres fora desses dois conjuntos—espaços, vírgulas, emoji, letras acentuadas fora do bloco latino básico—são copiados inalterados para as frases manterem a forma.
A transformação combinada é uma involução: como treze mais treze é vinte e seis e cinco mais cinco é dez, cada letra e cada dígito voltam a si após duas aplicações, então codificar e decodificar são a mesma chamada. Não há chave a escolher, nem flag de modo, nem passo de ponto flutuante. Cada passo é aritmética modular inteira com regra fixa, totalmente determinística, sem chamada de rede, sem semente aleatória e sem carimbo de relógio no caminho.
Esta página implementa só esse perfil fixo ROT18—não um deslocamento César variável, não Vigenère, não AES e não um quebrador por força bruta. Essas são ferramentas e intenções de busca separadas.
O que você envia e o que recebe de volta
Envie um campo string obrigatório chamado text contendo a mensagem que deseja transformar. Falhas de validação não consomem saldo pré-pago. Checagens clássicas incluem transformar Hello, World!
123 em Uryyb, Jbeyq! 678, aplicar a mesma transformação de novo para recuperar o original e confirmar que um campo text vazio é rejeitado em vez de devolvido inalterado.
Onde ferramentas ROT18 aparecem no trabalho real
Cursos introdutórios de criptografia e programação costumam apresentar ROT13 primeiro e depois pedir que os alunos estendam a ideia aos dígitos; um único oráculo ROT18 confiável agiliza demos de lição de casa e autoavaliadores que precisam de rotação de letras e dígitos. Aquecimentos de capture-the-flag e caças a passatempos ainda escondem mensagens no estilo ROT que misturam palavras e números à vista, e quem resolve quer uma transformação rápida e previsível em vez de um suite geral de criptoanálise.
Equipes de suporte e conteúdo às vezes ofuscam levemente spoilers, respostas de quiz, rótulos com cara de série ou códigos de tickets internos que misturam letras e dígitos e precisam do caminho inverso sem instalar biblioteca específica da linguagem. Se você precisa de um deslocamento César inteiro variável, cifragem autenticada forte, codificação Base32 ou Base64, ou recuperação automática de chave por análise de frequência, trate isso como intenções de busca e landings separadas em vez de sobrecarregar esta página fixa de ROT18.
Casos de uso
Demos de sala ROT13 mais dígitos
Mostre aos alunos como rotações de meio alfabeto e meio dígito se combinam, com uma transformação de referência para letras e números juntos.
Strings alfanuméricas mistas em passatempos e CTF
Codifique ou reverta strings de desafio que misturam palavras e dígitos sem escrever um script avulso para cada conjunto de problemas.
Perguntas frequentes
O que é ROT18?
Uma cifra de rotação combinada: ROT13 em letras latinas A–Z/a–z e ROT5 em dígitos 0–9. Caracteres não alfanuméricos ficam inalterados. Aplicá-la duas vezes recupera o texto original.
Como decodifico ROT18?
Aplique a mesma transformação de novo. ROT18 é autoinversa porque 13+13=26 e 5+5=10, então codificar e decodificar são idênticos.
O que acontece com entrada vazia?
Você deve fornecer uma string text não vazia; entrada em branco é rejeitada e não cobrada.
Espaços e pontuação são transformados?
Não. Só A–Z, a–z e dígitos 0–9 são rotacionados. Espaços, pontuação e outros caracteres passam inalterados.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/rot18 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World! 123"}'const res = await fetch("https://api.kit.forhosting.com/enc/rot18", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World! 123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/rot18",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World! 123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/rot18", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World! 123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World! 123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/rot18", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "Hello, World! 123"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.rot18",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Entrada vazia é rejeitada com erro claro invalid_input para scripts nunca tratarem em silêncio um campo em branco como no-op.
O que você envia e o que recebe de volta
Aliases como input, value, data, message, plaintext e ciphertext são aceitos para o mesmo campo, para scripts reutilizarem formatos de payload existentes. Em sucesso a resposta ecoa o text original, devolve result como a string ROT18, length desse resultado, letters_rotated e digits_rotated como contagens de quantos caracteres alfabéticos e numéricos foram rotacionados, mais rótulos alphabet, cipher e self_inverse para clientes afirmarem que atingiram o perfil ROT18. Text ausente, objetos não string para text, strings vazias e strings maiores que o máximo documentado falham com invalid_input e uma mensagem clara em inglês. O preço de chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item.
Onde ferramentas ROT18 aparecem no trabalho real
Como esta capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e validação falha não consome saldo.
Casos de integração
Ofuscação leve de spoilers e rótulos
Rotacione respostas de quiz ou rótulos no estilo ticket com letras e dígitos e recupere-os com a mesma chamada no navegador ou na API.