Cómo se usa
- Escribe tu alfabeto o elige uno en Predefinido y edítalo. Cada carácter puede aparecer una sola vez.
- Elige el Método: Número grande para alfabetos de cualquier longitud o Grupos de bits para alfabetos de 2, 4, 8, 16, 32 o 64 caracteres.
- Con Grupos de bits, si quieres, introduce en Carácter de relleno un carácter que no forme parte del alfabeto.
- Codifica tu texto o pega una cadena escrita con tu alfabeto para decodificarla.
Dos formas de asignar bytes a caracteres
Número grande funciona como Base58. Toda la entrada se lee como un único entero grande que se divide una y otra vez por la longitud del alfabeto; cada resto elige un carácter. Funciona con cualquier alfabeto de al menos 2 caracteres, por ejemplo de 10, 36, 58 o 62. Los bytes cero iniciales se escriben como el primer carácter del alfabeto, así que se conservan al codificar y volver a decodificar. No hay relleno, y la entrada está limitada a unos 20 KB porque la aritmética se vuelve lenta con datos largos.
Grupos de bits funciona como RFC 4648. La entrada se corta en fragmentos de un número fijo de bits: 1 bit para un alfabeto de 2 caracteres, 4 bits para uno de 16, 5 bits para uno de 32 y 6 bits para uno de 64. Cada fragmento es un índice dentro del alfabeto. Así es exactamente como funcionan el hexadecimal, Base32 y Base64, y la longitud de la salida depende solo de la longitud de la entrada.
Por qué los dos métodos dan resultados distintos
Un método codifica el valor numérico de los datos y el otro, sus bits posición por posición. Los resultados suelen diferir, y una cadena debe decodificarse con el mismo método que la generó.
| Alfabeto | Entrada | Grupos de bits | Número grande |
|---|---|---|---|
| Base64 estándar | Hi | SGk= | Ehp |
| Base32 RFC 4648 | Hi | JBUQ==== | SDJ |
01 | A | 01000001 | 1000001 |
0123456789 | Hi | no disponible | 18537 |
Con Grupos de bits y = como relleno, los alfabetos estándar reproducen el Base64 y el Base32 normales. Número grande descarta el bit cero inicial de A porque escribe un valor, no un número fijo de bits. Con los diez dígitos como alfabeto, simplemente muestra los bytes de Hi como un número decimal.
El carácter de relleno solo se aplica a Grupos de bits. La salida se rellena hasta un múltiplo de 4 caracteres con alfabetos de 64 caracteres y hasta un múltiplo de 8 con alfabetos de 32 y de 8 caracteres. Con 2, 4 o 16 caracteres, cada byte ocupa caracteres completos, así que nunca hace falta relleno.
Reglas para un alfabeto válido
- Al menos dos caracteres.
- Sin duplicados. El decodificador asigna cada carácter a exactamente un valor. Si
arepresentara a la vez el 0 y el 10, una cadena que lo contuviera no se podría decodificar. - Las mayúsculas y minúsculas importan.
ayAson caracteres distintos. - El carácter de relleno no debe estar en el alfabeto, porque de lo contrario no se podría distinguir de los datos.
Todo se ejecuta en tu navegador, así que tu alfabeto y tus datos se quedan en tu dispositivo.
Cuándo es útil un alfabeto personalizado
- Identificadores ofuscados. Un alfabeto mezclado convierte los identificadores en tokens sin un patrón evidente. Esto oculta, pero no protege: cualquiera que conozca el alfabeto puede decodificarlos.
- Formatos propietarios o heredados. Copia el alfabeto propio de un sistema desde su documentación y decodifica sus datos directamente.
- Aprendizaje. Compara longitudes de alfabeto y ambos métodos para ver cómo funciona la conversión de bases. Para alfabetos fijos, consulta Base58 y Base62.
Preguntas frecuentes
¿Qué diferencia hay entre Número grande y Grupos de bits?
Número grande convierte toda la entrada, como un único entero, a la nueva base, igual que Base58, y funciona con alfabetos de cualquier longitud. Grupos de bits divide la entrada en fragmentos de bits de tamaño fijo, igual que Base64, y necesita un alfabeto de 2, 4, 8, 16, 32 o 64 caracteres.
¿Por qué mi alfabeto Base64 personalizado no coincide con la salida del Base64 estándar?
El Base64 estándar usa grupos de bits. Elige el método Grupos de bits y pon = como Carácter de relleno para que coincida. El método Número grande produce una cadena completamente distinta con el mismo alfabeto.
¿Por qué no se permiten caracteres duplicados?
Cada carácter debe decodificarse como exactamente un valor. Un carácter repetido tendría dos significados, y los datos originales no se podrían recuperar de forma fiable.
¿Puedo usar un carácter de relleno con el método Número grande?
No. La salida de Número grande no tiene un tamaño de bloque fijo, así que no hay nada que rellenar. La opción de relleno solo se aplica a Grupos de bits.
¿Un alfabeto personalizado es una forma de cifrado?
No. Sigue siendo una codificación sin clave. Un alfabeto mezclado puede hacer que los datos sean más difíciles de reconocer a simple vista, pero nunca debe usarse para proteger secretos.