YEnc
# YEnc

yEnc (Homophon zu „why encode?“, zu deutsch: „warum kodieren?“) ist ein Kodierungsverfahren zur Übertragung von Binärdateien im Usenet oder per E-Mail. Der Name deutet an, dass auf aufwendige Kodierungsverfahren verzichtet wird, allerdings auf Kosten der Übertragungssicherheit.

## Kodierung

Das Verfahren besteht im Wesentlichen aus folgender Berechnungsvorschrift, die aus einem Eingabebyte $E$ ein Ausgabebyte $A$ erzeugt:

* $A=(E+42)\mod 256$.
* Wenn $A$ ein kritisches Zeichen wie 0 (NUL), 10 (LF), 13 (CR) und optional 9 (TAB) oder das Escapezeichen 61 (=, Gleichheitszeichen) ist, so besteht die Ausgabe statt $A$ aus dem Escapezeichen gefolgt von $A'=(E+64)\mod 256$.

Die Kodierung beruht demnach ähnlich wie das ROT13-Verfahren auf einer alphabetischen Rotation, jedoch auf dem kompletten Wertebereich mit einer anderen Verschiebungskonstante und Escaping. Da nur für 4 oder 5 von 256 möglichen Eingabebytes ein zusätzliches Byte erforderlich ist, benötigt das Verfahren nur etwa ein bis zwei Prozent an zusätzlicher Datenmenge (Overhead), während bei anderen Kodierungsverfahren wie UUencode oder Base64 die nur 6 Bit, also 64 von 256 möglichen Werten benutzen, etwa 33 bis 40 Prozent Overhead auftreten.

Der eingeschränkte Wertebereich der anderen Verfahren gewährleistet allerdings die zuverlässige Übertragung über alle Kanäle, indem sie nur einen weit geringeren Teil aller möglichen Bytewerte als gültige Kodierungswerte unterstützen, was zusätzlich wieder zu einer, wenn auch ungenauen, Fehlererkennung genutzt werden kann. yEnc bietet hierfür die Möglichkeit, eine zuverlässigere CRC32-Prüfsumme anzugeben.

## Nachteile

Es existiert kein RFC für yEnc, allerdings beschreibt die yEnc-Homepage eine rudimentäre Spezifikation und Syntax, die allerdings dem RFC 2822 oder dem RFC 2045 widerspricht, insbesondere indem es etliche Steuerzeichen (mit den wenigen erwähnten Ausnahmen) als Teil der kodierten Nachricht erlaubt.

Wie auch UUencode ermöglicht yEnc nicht die zuverlässige Erkennung von kodierten Abschnitten. Ferner wurde die Mehrzahl dieser Einschränkungen bereits Jahre zuvor durch MIME gelöst. Weiterhin sind nicht alle Transportwege im Netz 8-Bit-tauglich, was für yEnc zwingend erforderlich ist, da es fast den gesamten 8-bit-Wertebereich nutzt, so dass Datenverluste auftreten können. Kritiker bemängeln die fehlende Kompatibilität von yEnc mit existierenden Standards.

Trotz der Nachteile hat sich yEnc in Binärgruppen im Usenet stark verbreitet. Genauso wie für UUencode existieren spezielle Programme, um Dateien in mehrere Usenet-Postings zu kodieren oder sie aus solchen zu dekodieren. Viele Newsreader unterstützen yEnc mittlerweile.

