C# :: Aufgabe #87 :: Lösung #2

3 Lösungen Lösungen öffentlich
#87

One-Time-Pad Verschlüsselung

Anfänger - C# von SymTech - 13.02.2015 um 14:04 Uhr
Schreibe eine Konsolenanwendung die einen beliebigen Text nach One-Time-Pad ver- und entschlüsseln kann. Es sollen nur Buchstaben, Zahlen und Sonderzeichen vorkommen (also nicht die ganze ASCII-Palette verwenden).

Nutzen sie dabei nur den Namespace:
"System"

Konsolenausgabe:


Text codieren oder decodieren? (c/d)
c

Text: Train your programmer
Schlüssel: Das ist ein Schlüssel

Ergebnis:
&yX\oK=)[h?vJ}+4°EEy4
#2
22 Kommentare
vote_ok
von Mentalist999 (680 Punkte) - 19.02.2015 um 04:15 Uhr
Quellcode ausblenden C#-Code
        public static string Encrypt(string s)
        {
            string Result = "";
            Random Rndm = new Random();

            foreach (char c in s)
            {
                if ((int)c < 32 | (int)c > 125)
                    continue;

                int Verschiebung = Rndm.Next(32, 126), 
                    NewPos       = (int)c + Verschiebung;

                Result += Char.ConvertFromUtf32(Verschiebung) 
                        + Char.ConvertFromUtf32( (NewPos > 125) ? NewPos - 94 : NewPos );
            }

            return Result;
        }

        public static string Decrypt(string s)
        {
            string Result = "";

            for (int i = 0; i < s.Length; i += 2)
            {
                int OldPos = (int)s[i + 1] - (int)s[i];

                Result += Char.ConvertFromUtf32( (OldPos < 32) ? OldPos + 94 : OldPos );
            }

            return Result;
        }

Kommentare:

SymTech

Punkte: 1060

31 Aufgaben
11 Lösungen
13 Kommentare

#1
20.02.2015 um 09:14 Uhr
Sorry Mentalist999, netter Code aber das ist nicht One-Time-Pad.
Es gibt bei dir keinen Schlüssel.
Dein "Schlüssel" ist im verschlüsseltem Text enthalten was nicht gerade der Sinn von One-Time-Pad ist (mal abgesehen von der Sicherheitslücke).
Der Text, der Schlüssel und der verschlüsselte Text müssen gleich lang sein!

Mit freundlichem Gruß
SymTech
post_arrow
83 0

Mentalist999

Punkte: 680


21 Lösungen
50 Kommentare

#2
20.02.2015 um 15:48 Uhr
Ja, ich hatte auch nicht ganz verstanden was damit gemeint ist.
Nach deinem Kommentar jetzt habe ich es denke ich verstanden. :)

Aber in einem widerspreche ich vehement.

Meine Lösung enthält einen Schlüssel der in seiner Ausdrucksweise zufallsgeneriert ist.
Nach meiner Erfahrung ist das viel sicherer als ein statischer Schlüssel.
Bei der unauthorisierten Entschlüsselung ist es nämlich immer der erste Anhaltspunkt ein sich wiederholendes Zeichen, Muster oder einen Rhythmus zu finden.
Bei meiner verschlüsselung wird das lange dauern und großer Aufwand sein.
Bei Texten die mit einem statischen Schlüssel immer auf dieselbe Art verschlüsselt werden, ist das nicht unwesentlich leichter.

Dennoch : Meine Lösung ist in diesem Fall wohl falsch, da ich die Aufgabenstellung falsch aufgefasst habe. :)

Grüße Mentalist
post_arrow
84 0

Mentalist999

Punkte: 680


21 Lösungen
50 Kommentare

#3
20.02.2015 um 15:50 Uhr
Nochmal mit anderen Worten formuliert :
Derselbe verschlüsselte Satz, kann unzählige verschiedene verschlüsselte Formen ergeben.
Das ist mit zufälliger Ausdrucksweise gemeint.
post_arrow
85 0

Mentalist999

Punkte: 680


21 Lösungen
50 Kommentare

#4
20.02.2015 um 16:15 Uhr
vdqtSaSV:HvyJXZ]!/14Gg{HK`u#Cq|`u^tk-7>U`XhGgx]Ym4O7Ibx&11Azƒ:Z`wjzci|>lwakVj1Q{ˆxˆgw}“.N:I+6276@r41@qt)7Ff`j>AISY\w&)^hehStm04U,M

)u #r€{~&425zˆ$'TbRUq3tzLO-B#Cq|6K|’Oomt5@JZ;[X=`tp‹ZlBXJUAQ3<g)New‡6<&F}ˆAKau<\Ta8H@Pw{=<Kq|OT1;i+Ve=@r€t6IS\_bl:=:D47U_X[Xy2S>_)J

R@PS9Ghk=K!$TbcfJXqtTt!'LOF[Nnt7Le{p2.56AIY>^"e4Hz•`r)?EPAQdmi+[r}lr0P?Jbl;OAa]jN^gwNd1Qn}>I.3+51Q_nQT4B`"5?),1;69T^AD>HJM>_)J,Mi,

N<Z]BPNQSaSVr€SV7EPSe'X^hkUjVvz…5JJ`]}]d/:Qal.{`dxb}t†6Lcnsƒ+4.N\s_o'-y;+6q{tˆBbHU@PDTNd]}bq8CafBL9YtƒTWy‡}?AKz}lvDGhrnq]g\_n1AbEfVw

n\BE4BcfTbbe^lJMw…?B-MlrOR4I(HWbLaLby;GNnybr-ME*>Rb}BTXny„|Œmv`"H_HXBHEer};EI]y;O\N^DTdzUuQ`thmoy1QSb8;m{Hh*4,/4>loEOor@J&)Opy<PqJk

xf #'5dg+9wzv„}€JXTWXx*0UXsˆi+5@.CSi(H>EtWgTt8{{mˆas.Dgr}bkg)9Pk{V\c%1<6@Vj<\5BTdYi7MAaw†>IZ_;ERrjyilSab$ku@CISmpfp;>6@gj5VJkp3o2

Das ist 6 mal derselbe Satz und ganz bestimmt keine Sicherheitslücke. :)
Du kannst ja meine oben gepastete Decrypt Methode nutzen, dann wirst du es sehen.
post_arrow
86 0

SymTech

Punkte: 1060

31 Aufgaben
11 Lösungen
13 Kommentare

#5
20.02.2015 um 23:02 Uhr
Was ich meine ist das du den verschlüsselten Text ohne die Eingabe eines Passwortes entschlüsseln kannst.
Das ist die massive Sicherheitslücke dabei. Das ist noch leichter zu knacken als die Cäsar-Verschlüsselung.
Da muss man nur ein bisschen Rechnen und dann ist das auch egal ob dein Ergebnis jedesmal anders aussieht.

Solange der Schlüssel im verschlüsselten Text enthalten ist (egal wie) ist es so als ob du den schlüssel unter die Fußmatte legst und dann behauptest es wäre sicher.

Der sinn von OTP ist, dass solange man den schlüssel nur einmal verwendet der Code unknackbar ist.
Ich würde dir daher gerne ans Herz legen dir den Wiki-Artikel dazu durch zu lesen: One-Time-Pad

Mit freundlichem Gruß
SymTech
post_arrow
87 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2107409

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.