Después de leer sus comentarios, eso suena más razonable. Simplemente no estaba seguro de si tenía la intención de codificar megabytes de datos como este.
Recomiendo, siguiendo la sugerencia de Oliver, que aumente su densidad de datos al tomar prestada una página del cifrado de Bacon , que las pandillas de la prisión a menudo usan para codificar mensajes ocultos en misivas escritas en 2 estilos de guión diferentes, generalmente superior o vs. caracteres en minúsculas o caracteres impresos o cursivos, por ejemplo
Hey mOM, WHAT's FOR diNNeR TODAY? = ABBBA AAAAA BAAAB BAABA AAAAA
= P A S T A
Sin embargo, dado que su objetivo no es la estegnografía, simplemente usaría esto para expandir su conjunto de glifos. Al hacer esto, podría tener hasta 114 glifos simplemente usando caracteres alfanuméricos impresos y cursivos, o 12996 puntos de código usando codificación de doble carácter.
Sin embargo, dado que todos los recuentos de glifos mayores de 15 y menores de 256 son esencialmente los mismos para un cifrado directo de datos binarios (es decir, aún necesitará 2 caracteres para representar cada byte, lo que le dará una densidad de datos de 4 bits por carácter en todos los casos), puede usar los 98 glifos adicionales / 12740 puntos de código para la detección / corrección de errores.
Las formas de hacer esto incluyen:
- Elija un conjunto de los 256 combos de caracteres más fáciles de leer / escribir. Si se produce cualquier otro combo de caracteres, sabes que es un error de copia.
- Use dos versiones del carácter final como un bit de paridad.
Crea 50 conjuntos de glifos de 16 caracteres diferentes. Luego puede usarlos para cifrar los datos de corrección de errores de codificación.
Por ejemplo, {set 1}{set 1}
significa que los siguientes 3 mordiscos son iguales 0x000
, {set 1}{set 2}
iguales 0x001
, etc.
Puede usar esto para representar más de 2500 de los 4096 posibles valores de 1,5 bytes. Del mismo modo, puede usar solo 16 conjuntos para representar todos los valores del siguiente byte, lo que le brinda una redundancia del 100% sin aumentar la longitud de los datos codificados.
Alternativamente, puede usar los glifos adicionales para una compresión adicional:
- Implemente la codificación de ancho variable eligiendo 98 puntos de código de un solo carácter. Esto reduciría el tamaño promedio del contenido codificado en aproximadamente un 20%.
- Implemente algo similar a la codificación de longitud de ejecución utilizando diferentes conjuntos de glifos o combinaciones de conjuntos de glifos para representar nibbles / bytes repetidos. Ej
Ab
= aba
; aB
= abab
; AB
= ababab
...
- Use los glifos o puntos de código adicionales para representar "palabras" y "frases" que se repiten en sus datos. Aunque los datos precomprimidos probablemente tengan un alto nivel de entropía, no sé qué tan efectivo sería.
Para reducir aún más los errores de copia, mostraría el contenido codificado en líneas de cuadrícula y lo copiaría en papel cuadriculado. Si puede usar estacionario personalizado que tiene colores alternos de columna / fila o una cuadrícula a cuadros estilo tablero de ajedrez con columnas con letras y filas numeradas para búsquedas rápidas, eso aumentaría aún más la precisión de la copia.
También puede combinar un diseño de cuadrícula alterna con estilos de caracteres alternativos como una forma fácil de detección de errores. Es decir, si las columnas impares siempre están en mayúscula, si el transcriptor se encuentra escribiendo letras minúsculas en columnas impares, entonces saben que han cometido un error y pueden comenzar a rastrear para ver dónde sucedió.
Aunque si su prioridad principal es la precisión, usaría una codificación binaria +
código de Hamming . Usando un código de Hamming acortado (12, 8) en un papel gráfico estándar, es posible que solo quepa 187 bytes, codificando solo 124 bytes de datos. Pero podría transcribirse muy rápidamente (una barra oblicua para 1, nada para 0) y proporcionar una corrección de error único. Agregar un bit de paridad adicional (13, 8) proporcionaría SECDED (corrección de error simple, detección de error doble). Usando un código de hamming estándar como (15, 11) o (31, 26), obtienes una eficiencia aún mejor con 137 y 156 bytes de datos por hoja, respectivamente. Se pueden lograr incluso tasas de código más altas, dependiendo de cuán preciso cree que puede ser su transcriptor.
Una codificación binaria también sería más fácil de leer (en voz alta) y OCR / OMR.