Kris: Unterschied Kodieren / Crypten

Morgen allerseits !

Kann mir jemand in klaren Wörtern den Unterschied zwischen kodieren und crypten nennen ? Ein Beispiel wäre hilfreich ... danke :)

  1. Ähm... ja... da hast du wieder zwei Kinder reden hören.

    Naja. Generell heisst "Kodieren" einfach nur irgendein Format in einen anderen Umwandeln. Sagen wir den Zeichenformat von UTF-8 nach West-ISO usw.

    Crypten/Encrypen heisst einfach nur Verschlüsseln. Der Zweck ist nicht die Daten darzustellen, sondern sie gar nicht mehr darzustellen / darstellen zu können :D ... kryptische Darstellung eben...

    mfg
    Micha

  2. Moin!

    Kann mir jemand in klaren Wörtern den Unterschied zwischen kodieren und crypten nennen ? Ein Beispiel wäre hilfreich ... danke :)

    Kodieren ist ein Vorgang, bei dem ein Symbol aufgrund einer ein-eindeutigen Zuordnung in ein anderes Symbol übersetzt wird, und wieder zum vorhergehenden Symbol zurückübersetzt werden kann.

    "Symbol" ist deshalb so allgemein formuliert, weil darunter sowohl "Bytes" fallen, als auch "Buchstaben", "Ziffern", "Zahlen" etc.

    Beispiele: Wenn ich den Buchstaben "großes A" codieren will, nehme ich zum Beispiel die ASCII-Tabelle, gucke nach, welcher Bytewert dem zugeordnet ist, und erhalte "65" bzw. "0x41". Habe ich den Bytewert "65" und will wissen, welcher ASCII-Buchstabe das ist, gucke ich ebenfalls in der Tabelle nach und weiß es.

    Das geht auch mit komplexeren Vorgängen, wie beispielsweise der bei EMail angewandten Umwandlung von 8-Bit-Attachments in codierten Text, der nur 7-Bit-Zeichen verwendet. Da werden dann aus 3 8-Bit-Zeichen 4 7-Bit-Zeichen, und zurückwandeln kann man die natürlich auch.

    Wichtig ist: Bei einer Codierung ist für jedes mögliche Eingangssymbol ganz eindeutig ein Ausgangssymbol festgelegt, und jedes Ausgangssymbol hat auch nur exakt ein Eingangssymbol - ansonsten könnte man bei der Rückwandlung nicht mehr entscheiden, welches Eingangssymbol gemeint war.

    "Crypten" ist dagegen ein nicht so eindeutig formulierter Begriff, weil er im Sinnzusammenhang mehrere Bedeutungen haben könnte.

    Wenn er sich tatsächlich auf "crypt" bezieht, dann ist die Funktion gemeint, die aus den ersten 8 Zeichen eines Passwortes unter Unix einen Hash mit Salt errechnet, das Ausgangspasswort aber nicht wieder zurückrechnen kann.

    Weil crypt() mittlerweile nicht die einzige Funktion ist (und aufgrund der Passwortlängenbegrenzung extrem veraltet und sicherheitstechnisch unzureichend), wird "crypten" ggf. auch auf die Anwendung von md5(), sha1() und Konsorten angewandt. Eine technisch bessere Ausdrucksweise wäre "hashen", weil diese Funktionen tatsächlich einen Hashwert berechnen, den man eben nicht zurückrechnen kann auf den Eingangswert.

    "Crypten" kann sich aber auch auf Kryptografie allgemeiner beziehen, und die echte, umkehrbare Verschlüsselung meinen. Bei Verschlüsselung wird ein Text mit einem Passwort verknüpft und kann ohne Kenntnis des Passwortes nicht wiederhergestellt werden (zumindest in der Theorie, es hängt natürlich vom Verschlüsselungsmechanismus ab, ob dieser Vorgang wirklich sicher ist).

    Obwohl bei allen drei genannten Vorgängen (Codierung, Hash, Verschlüsselung) aus einem evtl. lesbaren Text ein komplett unlesbarer "Code" entsteht, ist der entscheidende Unterschied der, dass man bei der Codierung problemlos wieder zurück zum Text kommt, bei der Verschlüsselung benötigt man dazu das Passwort, und beim Hash ist es komplett unmöglich.

    Es ist daher in den Fällen, die Sicherheit bringen sollen, unbedingt erforderlich, dass der Programmierer weiß, was er da gerade macht. Es bringt nichts, ein Passwort nur zu codieren, wenn beabsichtigt ist, dass niemand daran kommen soll. Umgekehrt ist es ebenso unsinnig, aus einem Text einen Hash zu berechnen, wenn man später den Text wieder benötigt. :)

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
  3. Morgen allerseits !

    Kann mir jemand in klaren Wörtern den Unterschied zwischen kodieren und crypten nennen ? Ein Beispiel wäre hilfreich ... danke :)
    Morgen allerseits !

    Kann mir jemand in klaren Wörtern den Unterschied zwischen kodieren und crypten nennen ? Ein Beispiel wäre hilfreich ... danke :)

    So aus dem Zusammenhang gerissen für sich alleine würde ich sagen, die beiden Worte könnten Synonyme sein. Wenn du aber meinst kodieren im Sinne von ein Encoding verwenden, dann sind sie nicht synonym.

    kodieren in letzterem Sinne wäre die Abbildung von Buchstaben auf Zahlenwerten. Z.B. ein ö wäre ne 246 in Unicode. Weil der Rechner kennt keine Buchstaben, der kennt nur Bits für den würde an der entsprechenden Stelle im Text 0000000011110110 stehen, was dann bedeuten würde "hier steht ein ö".

    Crypten würde ich als verschlüsseln bezeichnen. Sprich einen Text nach mathematischen Verfahren so zu verändern, dass er nur mit größt möglichem Aufwand wieder hergestellt werden kann. Eines der einfachsten und mit minimalen Aufwand zu knackende Verschlüsselungsverfahren ist wohl das Cäsarchiffre, bei dem das Alphabet um eine bestimmte Anzahl an Buchstaben rotiert wird und daraus der Text neu zusammengesetzt wird, also bei einer Rotierung um z.B. 4 Buchstaben würde aus Buchstabe EXFKVWDEH.

    Hoffe mal, ich hab des jetzt einigermassen anständig erklärt :)