Nachdem Sie Ihre Kommentare gelesen haben, klingt dies vernünftiger. Ich war mir nur nicht sicher, ob Sie Megabyte an Daten wie diese codieren wollten.
In Anlehnung an Olivers Vorschlag würde ich empfehlen, dass Sie Ihre Datendichte erhöhen, indem Sie eine Seite aus Bacons Chiffre ausleihen, die Gefängnisbanden häufig verwenden, um versteckte Nachrichten in Missiven zu verschlüsseln, die in zwei verschiedenen Skriptstilen geschrieben sind - normalerweise entweder Upper vs. Kleinbuchstaben oder gedruckte oder kursive Zeichen, z
Hey mOM, WHAT's FOR diNNeR TODAY? = ABBBA AAAAA BAAAB BAABA AAAAA
= P A S T A
Da Ihr Ziel jedoch nicht die Stegnographie ist, würden Sie dies einfach zum Erweitern Ihres Glyphensatzes verwenden. Auf diese Weise können Sie bis zu 114 Glyphen nur mit alphanumerischen Druck- und Kursivzeichen oder 12996 Codepunkten mit Doppelzeichencodierung verwenden.
Da jedoch alle Glyphenzahlen größer als 15 und kleiner als 256 für eine direkte Verschlüsselung von Binärdaten im Wesentlichen gleich sind (dh, Sie benötigen immer noch 2 Zeichen, um jedes Byte darzustellen, sodass Sie eine Datendichte von 4 Bit pro Zeichen in erhalten In allen Fällen können Sie die zusätzlichen 98 Glyphen / 12740 Codepunkte zur Fehlererkennung / -korrektur verwenden.
Möglichkeiten, dies zu tun, umfassen:
- Wählen Sie einen Satz der 256 am einfachsten zu lesenden / zu schreibenden Zeichenkombinationen. Wenn eine andere Zeichenkombination auftritt, liegt ein Kopierfehler vor.
- Verwenden Sie zwei Versionen des Endzeichens als Paritätsbit.
Erstellen Sie 50 verschiedene 16-stellige Glyphensätze. Sie können sie dann zum Verschlüsseln von Fehlerkorrekturdaten verwenden.
ZB {set 1}{set 1}
bedeutet, dass die nächsten 3 Knabbereien gleich 0x000
, {set 1}{set 2}
gleich 0x001
usw. sind.
Sie können dies verwenden, um 2500+ der 4096 möglichen 1,5-Byte-Werte darzustellen. In ähnlicher Weise könnten Sie nur 16 Sätze verwenden, um alle Werte des folgenden Bytes darzustellen, wodurch Sie 100% Redundanz erhalten, ohne Ihre codierte Datenlänge zu erhöhen.
Alternativ können Sie die zusätzlichen Glyphen für zusätzliche Komprimierung verwenden:
- Implementieren Sie eine Codierung mit variabler Breite, indem Sie 98 Codepunkte mit einem Zeichen auswählen. Dies würde die durchschnittliche Größe des codierten Inhalts um etwa 20% reduzieren.
- Implementieren Sie etwas, das der Lauflängencodierung ähnelt, indem Sie verschiedene Glyphensätze oder Glyphensatzkombinationen verwenden, um sich wiederholende Halbbytes / Bytes darzustellen. ZB
Ab
= aba
; aB
= abab
; AB
= ababab
...
- Verwenden Sie die zusätzlichen Glyphen oder Codepunkte, um "Wörter" und "Phrasen" darzustellen, die in Ihren Daten wiederholt werden. Obwohl vorkomprimierte Daten wahrscheinlich ein hohes Maß an Entropie aufweisen werden, weiß ich nicht, wie effektiv dies sein würde.
Um Kopierfehler weiter zu reduzieren, würde ich den codierten Inhalt in Gitternetzlinien anzeigen und auf Millimeterpapier kopieren. Wenn Sie benutzerdefiniertes stationäres Material mit abwechselnden Spalten- / Zeilenfarben oder ein schachbrettartiges Schachbrettmuster mit beschrifteten Spalten und nummerierten Zeilen für eine schnelle Suche verwenden können, wird die Kopiergenauigkeit weiter erhöht.
Sie können auch ein abwechselndes Rasterlayout mit abwechselnden Zeichenstilen als einfache Form der Fehlererkennung kombinieren. Das heißt, wenn ungerade Spalten immer in Großbuchstaben geschrieben werden und der Transkriptor Kleinbuchstaben in ungeraden Spalten schreibt, weiß er, dass er einen Fehler gemacht hat, und kann zurückverfolgen, um zu sehen, wo es passiert ist.
Obwohl, wenn Ihre Hauptpriorität Genauigkeit ist, würde ich eine binäre Kodierung +
Hamming Code verwenden . Bei Verwendung eines (12, 8) gekürzten Hamming-Codes auf Standard-Grafikpapier passen Sie möglicherweise nur auf 187 Byte, wobei nur 124 Byte Daten codiert werden. Aber es könnte sehr schnell transkribiert werden (ein Schrägstrich für 1, nichts für 0) und eine einzelne Fehlerkorrektur liefern. Das Anheften eines zusätzlichen Paritätsbits (13, 8) würde SECDED (Einzelfehlerkorrektur, Doppelfehlererkennung) ergeben. Mit einem Standard-Hamming-Code wie (15, 11) oder (31, 26) erzielen Sie mit 137 bzw. 156 Byte Daten pro Blatt eine noch höhere Effizienz. Es können sogar noch höhere Coderaten erzielt werden, je nachdem, wie genau Sie glauben, dass Ihr Transkribent sein kann.
Eine binäre Codierung wäre auch einfacher zu lesen (laut) und OCR / OMR.