Cifrado por desplazamiento QWERTY: cifrar o descifrar, gratis
Con un desplazamiento de uno, hello se convierte en jraap: cada letra pasa a la tecla de su derecha en su misma fila QWERTY, y la l da la vuelta hasta la a. El mismo desplazamiento en modo descifrar recupera hello. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- hello
- Desplazamiento
- 1
- Modo de cálculo
- Encrypt
- Resultado
- jraap
- Longitud
- 5
- Letras desplazadas
- 5
- Diseño
- qwerty
Un cifrado por desplazamiento de teclado no rota las letras del alfabeto como el de César. En su lugar mueve cada carácter a una tecla vecina en el diseño físico QWERTY: con offset uno en modo encrypt, Q pasa a W, W a E, A a S, y así en la misma fila. El descifrado camina en dirección contraria, de modo que un offset conocido siempre recupera el mensaje original cuando todos los caracteres eran letras admitidas o espacios. Esta capacidad implementa esa transformación de teclas adyacentes con un offset entero configurable y un modo encrypt o decrypt.
Cómo un desplazamiento QWERTY mueve las letras
La rejilla de letras QWERTY de Estados Unidos se trata como tres filas independientes: la fila superior qwertyuiop, la fila base asdfghjkl y la inferior zxcvbnm. El cifrado mueve cada letra un número fijo de teclas hacia la derecha en su propia fila; el descifrado mueve la misma distancia hacia la izquierda. El número de pasos es el offset entero que usted suministra.
El movimiento solo se envuelve dentro de la fila: la letra después de P es Q otra vez, después de L es A y después de M es Z, de modo que todo carácter alfabético aterriza siempre en otra letra de la misma fila física. Se conserva el caso: una H mayúscula con offset uno se convierte en J mayúscula y una h minúscula en j. Los espacios se copian sin cambios para que las frases de varias palabras mantengan su forma.
Dígitos, puntuación, emoji y letras fuera del bloque latino básico no están en el mapa admitido; el motor se detiene de inmediato con un error de tecla no admitida en lugar de inventar un vecino. Matemáticamente la transformación es aritmética modular sobre el índice de fila: se encuentra la posición del carácter en su fila, se suma o resta el offset módulo la longitud de la fila y se mapea de nuevo a un carácter del mismo caso.
Offset cero es la identidad; once en una fila de diez teclas equivale a uno. No hay llamada de red, ni semilla aleatoria ni marca de tiempo en el camino. Esta página implementa solo adyacencia QWERTY en la misma fila, no rotación alfabética César, no recorrido diagonal multi-fila y no cifrado fuerte.
Qué envía usted y qué recibe
Envíe un campo de cadena obligatorio llamado text, un entero obligatorio llamado offset y un campo mode opcional con valor encrypt o decrypt. Si se omite mode, encrypt es el valor predeterminado para que una carga mínima siga siendo útil. El modo encrypt desplaza las letras a la derecha en la fila QWERTY; decrypt las desplaza a la izquierda la misma distancia absoluta, lo que invierte un encrypt previo con ese offset.
Comprobaciones clásicas: cifrar hello con offset uno da jraap (h→j, e→r, l→a con envoltura de fila, o→p); descifrar ese texto con el mismo offset recupera hello; y confirmar que hello! falla porque el signo de exclamación no es una tecla admitida.
Dónde aparece el cifrado por teclado en el trabajo real
La criptografía introductoria y los puzzles de disposición de teclado a menudo piden a los estudiantes que alteren un mensaje deslizando los dedos una tecla de lado en lugar de contar posiciones del alfabeto; un oráculo confiable que cifra y descifra con un offset entero explícito acelera demos de deberes y autoevaluadores. Los calentamientos de capture-the-flag y los atrezos de escape room a veces ocultan frases desplazadas QWERTY en notas o imágenes, y los resolutores quieren una herramienta adyacente rápida y predecible en lugar de un suite general de criptoanálisis.
Los equipos de soporte y contenido pueden ofuscar ligeramente spoilers o respuestas de cuestionarios con un desliz trivial de teclado y necesitan la ruta inversa sin instalar una biblioteca específica del lenguaje. Si necesita rotación alfabética César clásica, claves polialfabéticas Vigenère, codificación Base64 o cifrado autenticado fuerte, trate esas como intenciones de búsqueda y páginas de aterrizaje separadas en lugar de sobrecargar esta página de teclas adyacentes QWERTY.
Qué puede hacer con ella
Demos de adyacencia QWERTY en clase
Cifre y descifre palabras de ejemplo con un offset entero conocido para que los estudiantes vean vecinos de teclado en la misma fila en lugar de aritmética alfabética.
Puzzles y CTF con desplazamiento de teclado
Aplique o invierta un desliz fijo de teclas adyacentes en cadenas de desafío sin escribir un script único para cada conjunto de problemas.
Preguntas frecuentes
¿Qué es un cifrado por desplazamiento de teclado?
Una sustitución que mueve cada letra a una tecla vecina en una fila QWERTY según un offset entero fijo, en lugar de rotar por el alfabeto como César.
¿Cómo descifro el texto?
Establezca mode en decrypt con el mismo offset entero usado al cifrar. Eso mueve cada letra a la izquierda en su fila y recupera el original cuando solo había letras y espacios.
¿El desplazamiento se envuelve al final de la fila?
Sí. El movimiento es modular dentro de la misma fila QWERTY, de modo que P con offset uno se convierte en Q, y L con offset uno se convierte en A.
¿Cuánto cuesta?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Se conservan las mayúsculas y los espacios?
Sí. Cada letra sigue siendo mayúscula o minúscula, así que una H mayúscula con desplazamiento de uno pasa a J y una h minúscula a j. Los espacios se copian sin cambios, de modo que una frase de varias palabras conserva su forma.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/keyboard-shift \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello","offset":1}'const res = await fetch("https://api.kit.forhosting.com/enc/keyboard-shift", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello",
"offset": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/keyboard-shift",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello",
"offset": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/keyboard-shift", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello","offset":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello","offset":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/keyboard-shift", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "hello",
"offset": 1
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.keyboard_shift",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Solo se desplazan las letras latinas de la A a la Z, se conserva el caso, los espacios permanecen y cualquier dígito, puntuación u otro símbolo se rechaza como tecla no admitida con un error invalid_input claro.
Cómo un desplazamiento QWERTY mueve las letras
Como cada paso es aritmética entera con una tabla de diseño fija, el cifrado es totalmente determinista: texto, offset y modo idénticos siempre producen el mismo JSON.
Qué envía usted y qué recibe
En éxito la respuesta repite mode, el text original, el offset entero que envió, la cadena result transformada, length de ese resultado, letters_shifted como recuento de caracteres alfabéticos movidos, más etiquetas layout, rows y cipher para clientes que afirmen el perfil alcanzado. Text ausente, offset ausente, objetos no cadena para text, valores de mode no admitidos, cadenas más largas que el máximo documentado, offsets no enteros incluidos valores flotantes como uno punto cinco, y cualquier carácter que no sea letra latina o espacio —puntuación, dígitos, símbolos— fallan con invalid_input y un mensaje claro en inglés que nombra la tecla no admitida cuando corresponde. Los fallos de validación no consumen saldo prepago. El precio de las llamadas API exitosas es la base publicada de $0.002 por elemento.
Dónde aparece el cifrado por teclado en el trabajo real
Como esta capacidad es un motor de parse puro, el precio de la API es la base publicada de $0.002 por elemento exitoso y la validación fallida no consume saldo.
Casos de integración
Ofuscación ligera de spoilers
Deslice de lado respuestas de cuestionarios o etiquetas en QWERTY y descífrelas después con el mismo contrato en el navegador o la API.
Preguntas técnicas
¿Qué cuenta como tecla no admitida?
Cualquier carácter que no sea letra latina A–Z/a–z ni espacio: dígitos, puntuación, emoji y letras acentuadas fallan con invalid_input y no se cobran.