1 2 3 | nächste Seite |
Gepostet: |
Multiplaktions Chiffrierung | ||||||||||
Hallo, wir haben im Unterricht als erstes die Funktion Caesar geschrieben(+Dechiffrierung):
Nun haben wir das ganze für mit multiplikation gemacht, aber nur im bereich der ascii-tabelle:
Frage ist jetzt, wie ich das ganze wieder rückgängig machen kann, da ich ja eigentlich kein erweiterungsfaktor dann gegeben habe..oder? mfg |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Zur Verschlüsselung benutzt du die Rechnung c = n*w mod p, mit p=255. Dabei sind w ein Klartextzeichen, c ein Geheimtextzeichen, n der Faktor und p der Modul. Zur Entschlüsselung wird dann die Gleichung nach w umgestellt und es ergibt sich w = c*n' mod p, wobei n' das multiplikative Inverse zu n im Modul p ist. Das Problem ist, daß man hier nicht einfach dividieren kann. Du mußt also einen Wert n' finden, so daß gilt 1 = n*n' mod p. Das geht z.B. durch Ausprobieren aller Werte zwischen 1 und p-1. Wichtig ist allerding noch, daß es nicht in jedem Modul p zu jedem Wert n ein Inverses gibt. Das ist nur gesichert, wenn p eine Primzahl ist. Bei deinem Beispiel wäre z.B. 257 ganz gut, denn dann gibt es genau 256 (1..256) Elemente die ein Inverses haben, also ebensoviele wie es Zeichen im ASCII-Zeichensatz gibt. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hmm...also statt mod=255 ...257-1 ? ich glaube, ihren (darf man sie auch dutzen?....wäre dann eher für die gewohnheit^^) ansatz habe ich verstanden... das könnte man gut mit listenkomprehensions hinbekommen..denk ich.. mfg Edit: Ich habe aber doch beim zureckrechnen keinen erweiterungsfaktor, oder? ..insofern ginge ja n*n' nicht, da beides nicht gegeben ist.. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Vorneweg erst einmal: Keine Scheu vor dem Du, wir dutzen uns hier im Forum alle. Dann zum Faktor. Der Faktor muß auch bei der Entschlüsselungsfunktion gegeben sein, da der Klartext sonst nicht eindeutig wiederherstellbar wäre (genau wie der Summand bei der einfachen Verschiebemethode). Und zu guter letzt nochmal zu der Multiplikationsmethode. Da hab ich mal nachgeblättert und mir ist aufgefallen, daß du deine ursprüngliche Variante auch verwenden kannst, wenn du dich darauf beschränkst, nur solche Faktoren n zu verwenden, die mit dem Modul p keinen gemeinsamen Teiler haben, also gcd n p == 1. p kann dann aber beliebig sein. Bei meinem Vorschlag müßte ord w erst einmal um 1 verschoben werden, damit nicht mit den Zahlen von 0..255, sondern von 1..256 gerechnet wird (um ein eindeutiges Inverses zu garantieren). Die so verschobene Zahl kann dann mit n multipliziert werden und das Ergebnis modulo p=257 genommen werden. Da nun wieder eine Zahl zwischen 1..256 herauskommt, muß wieder um 1 zurückverschoben werden und das Ergebnis in einen Char umgewandelt werden. Die entsprechende encode-Funktion sieht dann so aus: encode "" _ = [] Die Entschlüsselungsfunktion dann nach dem selben Prinzip, nur eben mit n'. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
in manchen foren sind ein paar leute, die man nicht mit du anreden sollte, weil man weiß, sie sind schon "weit" üebr 18 Ich werd mich morgen mal versuchen, etwas hinzubekommen... dann danke ich dir^^... |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
bei nen "sie" würde ich mir auch ganz schön alt vorkommen... | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
ûnd noch was konstruktives zum thema? :D hmmm...donnerstag muss ich es fertig haben...bleiben mir ja nichtmehr viele tage :/ |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
soo...da nun mein pc ein problem hat und alle programme fast automatisch schließt(u.a. auch winhugs) kann ich das proggen der sache komplett vergessen... ich danke trotzdem für all eure bemühungen..:/ mfg Edit: Wenn ich es chiffriere, muss ich es dann nich auch mit mod 257 machen? bzw. 256? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
ja da solltest du auch modulo teilen ...sonnst kommt sowas raus... __ __ __ __ ____ ___ Main> caesar "z" 1 "{" Main> caesar1 "z" 1 "{" Main> hast du mal versucht hugs neuzuinstallieren? gruß jacke ps: die funktion von siracusa kann man zum ver und entschlüßeln verwenden... verschlüßeln: encode text n entschlüßeln : encode text (1/n) du solltest aber noch runden in die funktion einbauen..sonst klappt das nich so ganz mit den brüchen ...;-) |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
hugs neu install -> geht nicht...da meine systemdatein irgendwie im arsch(sry) sind und kaum ein prog somit richtig geht.. dein post mit dem 1/n usw. hab ich nun wieder nicht verstanden :/ ich hab nunmal im normalen hugs ohend atei zu laden erstmal :l Char und dann dies gemacht: --> ord 'r' * 8 = 912 mach ich aber ord 'r' = 144 * 8 = 1152 ....was nun? Oo <-- mfg <--Edit: verguckt *sry*--> ..ich probier bis nachher nochmal was hinzubekommen.. |
|||||||||||
Zum Seitenanfang | |||||||||||
1 2 3 | nächste Seite |