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 Bearbeiten

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

  •  .
  • Wenn   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   aus dem Escapezeichen gefolgt von  .[1]

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 Bearbeiten

Es existiert kein RFC für yEnc, allerdings beschreibt die yEnc-Homepage eine rudimentäre Spezifikation und Syntax, die allerdings dem RFC 2822[2] oder dem RFC 2045[3] 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.[4] 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.[5] 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.

Weblinks Bearbeiten

Einzelnachweise Bearbeiten

  1. Jürgen Helbing: yEncode – A quick and dirty encoding for binaries v1.3. 5. März 2002, abgerufen am 22. Januar 2015 (englisch).
  2. RFC 2822 – Internet Message Format. April 2001 (englisch).
  3. RFC 2045 – Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. November 1996 (englisch).
  4. Claus Färber: yEnc considered harmful. 6. April 2002, archiviert vom Original (nicht mehr online verfügbar) am 1. Juni 2009; abgerufen am 3. Juni 2010.
  5. Support - yEnc File Attachment Support. Abgerufen am 3. Juni 2010.