Verschlüsselung
Übersicht

![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte mir zum Thema Verschlüsselung auch mal etwas überlegt.
Und zwar nützt man die Eigenschaft des Zufalls aus, nicht zufällig zu sein. Man bestimmt vor dem Verschlüsseln einen Seed (das kann Millisecs() oder etwas anderes sein) und schreibt diesen in die Ausgangsdatei (man kann vorher noch die Bytes vertauschen oder sonstetwas damit anstellen, damit er nicht gleich ausgelesen werden kann). Dann zerlegt man den Ursprungstext in Buchstaben, rechnet zu dessen ASCII - Wert einen Zufallswert und schreibt nun den Buchstaben in die Ausgangsdatei. Beim Entschlüsseln muss man nur noch den Seed auslesen (da man ja weiss, wie er hineingeschrieben wurde) und vom ASCII - Wert der Buchstaben den Zufallswert abziehen. Wenn man (wie im Beispielcode) noch andere Rands ausführt, muss man selbstverständlich genausoviele Rands ausführen. Selbst wenn jemand den Seed herausfindet, muss er gleichviele Rands ausführen wie beim Verschlüsseln, damit er wieder den gleichen Ausgangstext erhält. Eine solche Verschlüsselung ist durch die Mengenanalyse nicht zu knacken und erzeugt neben 4 Bytes für den Seed keine zusätzliche Daten. Sie wäre höchstens durch Reverse - Engineering zu knacken, was wohl kaum einer machen wird (solange man nicht für die Regierung oder sonstwen arbeitet). Code: [AUSKLAPPEN] Function Encrypt$( Source$ )
Seed = MilliSecs() SeedRnd Seed Local Output$ Output$ = Output$ + Chr$( Seed Shr 32 ) + Chr$( ( Seed Shr 16 ) And $FF ) + Chr$( ( Seed Shr 8 ) And $FF ) + Chr$( Seed And $FF ) For i = 1 To Len( Source$ ) Char$ = Mid( Source$, i, 1 ) Char$ = Chr$( ( Asc( Char$ ) + Rand( 0, 255 ) )Mod 255 ) Output$ = Output$ + Char$ For t = 0 To Rand( 0, 20 ) Rand( 0, 255 ) Next Next Return Output$ End Function |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Cardonic |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Xeres: Die Verschlüsselung ist ja polyalphabetisch. D.h. es muss zuerst die Periodenlänge herausgefunden werden. Die ist in dem Fall einfach um "s" grösser.
Danach werden immer die Zeichen die Jeweils mit dem gleichen Buchstaben des Schlüssels verschlüsselt wurden mit der Häuffigkeitsanalyse untersucht. Wenn nur Schrott rauskommt, weiss man sich, dass es sich um den Datenschrott-Teil handelt. ~edit~ @Nobody: Wieso nimmst du den Seed nicht gleich als Schlüssel; oder berechnest den Seed aus dem Schlüssel ? Den Seed in die Datei zu schreiben birgt nur ein zusätzliches Risiko: - Entweder der Seed wird immer auf die Gleiche weise verschlüsselt und in die Datei geschrieben => wenn man das Verschlüsslungsverfahren kennt, kann man jede Nachricht einfach so entschlüsseln. - Oder der Seed wird mit einem Schlüssel verschlüsselt und in die Datei geschriebe => Das gibt dem Kryptoanalytike eventuell einen Ansatz für das entziffern. |
||
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet. |
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Xeres hat Folgendes geschrieben: Wenn der Datenschrott die Häufigkeitsanalyse stört, macht sie die Verschlüsselung schon etwas komplizierter.
Genau das soll er. Und ja, es ist XoR mit Datenmüll zu den Parametern: t$ = text$ = Der zu verschlüsselnde Text k$ = key$ = Der Schlüssel = Das Passwort s% = step% = Anzahl der Zeichen Datenmüll zwischen den Daten |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nobody. das mit dem RND is so ne sache. ich hattemal ein Prog mit nem Key so verschlüsselt:
Setup: key= Millisecs() Print key test=Input("geben sie hier den antwort key ein:") seedrnd key if test=Rand(0,10000000) Mein Prog: key=input("key vom Kunden") Print Rand(0,10000000) wenn die beiden Progs auf verschiedenen PC laufen kommen mal das richtige mal ein falsches ergebnis raus... |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also dein Code ist ein wenig eigenartig, vor allem, da du den Begriff Key für zwei verschiedene Dinge benutzt.
Aber machs doch einfacher: Code: [AUSKLAPPEN] SeedRnd 500 For i = 0 To 5 Print Rand( 0, 20 ) Next Führ den Code auf so vielen Rechnern aus wie du willst, es wird IMMMER das gleiche rauskommen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group