| Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a. |
Diskussion: eigener krypto algorithmus sicher? im Forum Cryptography & Encryption, in der Kategorie Security Area; Anzeige moin, bin gerade dabei ein programm zu coden welches einen string in eine zeichenkette codiert, und wollte jetzt mal ...
![]() |
| | #1 (permalink) |
| Registriert seit: 20.05.03 ![]() Likes: 0 | Anzeige moin, bin gerade dabei ein programm zu coden welches einen string in eine zeichenkette codiert, und wollte jetzt mal wissen, ob dieses verfahren sicher ist, so wird zum beispie das wort "intehligentzkwozient" in "72x11214040x56x84x72x56x40x98x16020877x1841051827 2x40x112140" umgewandelt, oder "hundehuette" in "64x16898x32x35x56x16840x16014040x" beim umwandeln wird ein binärschlüssel verwendet, dessen länge frei wälbar ist(destolänger der schlüssel, desto sicherer, in den oberen beispielen habe ich eine 10 zeichen langen schlüssel verwendet... kann man dieses verfahren leicht entschlüsseln? danke schonmal im vorraus |
| | |
| | #2 (permalink) |
| Themenstarter Registriert seit: 20.05.03 ![]() Likes: 0 | hier der source: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Edit3: TEdit; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var input:string; key:string; alpha:integer; i:integer; begin input := edit1.Text; key := edit2.Text; edit3.Clear; while length(edit1.Text) > length(edit2.Text) do begin edit2.Text := edit2.Text + edit2.Text end; for i := 1 to length(input) do begin if input[i] = 'a' then begin alpha := 1; end else if input[i] = 'b' then begin alpha := 2; end else if input[i] = 'c' then begin alpha := 3; end else if input[i] = 'd' then begin alpha := 4; end else if input[i] = 'e' then begin alpha := 5; end else if input[i] = 'f' then begin alpha := 6; end else if input[i] = 'g' then begin alpha := 7; end else if input[i] = 'h' then begin alpha := 8; end else if input[i] = 'i' then begin alpha := 9; end else if input[i] = 'j' then begin alpha := 10; end else if input[i] = 'k' then begin alpha := 11; end else if input[i] = 'l' then begin alpha := 12; end else if input[i] = 'm' then begin alpha := 13; end else if input[i] = 'n' then begin alpha := 14; end else if input[i] = 'o' then begin alpha := 15; end else if input[i] = 'p' then begin alpha := 16; end else if input[i] = 'q' then begin alpha := 17; end else if input[i] = 'r' then begin alpha := 18; end else if input[i] = 's' then begin alpha := 19; end else if input[i] = 't' then begin alpha := 20; end else if input[i] = 'u' then begin alpha := 21; end else if input[i] = 'v' then begin alpha := 22; end else if input[i] = 'w' then begin alpha := 23; end else if input[i] = 'x' then begin alpha := 24; end else if input[i] = 'y' then begin alpha := 25; end else if input[i] = 'z' then begin alpha := 26; end else if input[i] = ' ' then begin alpha := 27; end; if key[i] = '0' then begin alpha := alpha * 7; if length(inttostr(alpha)) = 1 then begin edit3.text := edit3.text + inttostr(alpha) + 'xx'; end else if length(inttostr(alpha)) = 2 then begin edit3.Text := edit3.Text + inttostr(alpha) + 'x'; end else if length(inttostr(alpha)) = 3 then begin edit3.Text := edit3.Text + inttostr(alpha); end; end else if key[i] = '1' then begin alpha := alpha * 8; if length(inttostr(alpha)) = 1 then begin edit3.Text := edit3.Text + inttostr(alpha) + 'xx'; end else if length(inttostr(alpha)) = 2 then begin edit3.Text := edit3.Text + inttostr(alpha) + 'x'; end else if length(inttostr(alpha)) = 3 then begin edit3.Text := edit3.Text + inttostr(alpha); end; end; end; end; end. das ist der source vom decodierer, der source vom encoder entschlüsselt das ganze dann noch entsprechend ... |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Registriert seit: 06.08.02 ![]() Likes: 0 | Wenn man den Cipher z.B. der 'hundehuette' mal auseinanderklamüsert und um die 'x' bereinigt und dann schaut, ob die die verbleibenden Zahlen durch 7 oder 8 teilbar sind, bekommt man relativ schnell ein recht genaues Abbild des cleartext. 64/8 => 8 => h 168/8 oder 168/7 => 21 oder 24 => u oder x 98 => 14 => n 32 => 4 => d 35 => 5 => e 56/8 oder 56/7 => 7 oder 8 => g oder h 168/8 oder 168/7 => 21 oder 24 => u oder x 40 => 5 => e 160 => 20 => t 140 => 20 => t 40 => 5 => 8 'h'('u'|'x')'nde'('g'|'h')('u'|'x')'ette' ... |
| | |
| | #4 (permalink) |
| Themenstarter Registriert seit: 20.05.03 ![]() Likes: 0 | könnte man natürlich den binärschlüssel in eine normale zahlenkette umwaqndeln, dann hätte man nicht nur /7 oder /8 möglichkeiten, oder man ändert die rechen operation selber, sodass sie - ohne den quelltext- nicht so leicht zu durchschauen ist... wenn jemand verbesserungsvorschläge hat bitte posten ... |
| | |
| | #5 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.03 ![]() Likes: 1 | "einen string in eine zeichenkette codieren" - hört sich gut an aber passt schonalso wenn ich mir zeichenketten und die dazugehörigen schlüssel so angucke sieht das ganze sehr unsicher aus hab mir das jetzt nicht so genau angeguckt aber das x ist bei dir ein art trennzeichen oder? soetwas solltest du auf jedenfall vermeiden weil es die sache extrem vereinfacht dies zu entschlüsseln wieviele zeichen zu einem wert (oder mehreren) gehören sollte eindeutig sein und keine trennzeichen erfordern (d.h. nicht das zu jedem wert eine konstante anzahl von zeichen gehören sollte!) die riesige elseif schleife kannst du dir sparen sowas erledigt man normalerweise über die ascii werte der einzelnen buchstaben du solltest auch mehr umherrechnen und bitoperationen benutzen dort musst du allerdings beachten das informationen verloren gehen können zB bei bitverschiebungen wie du eben selber schon geschrieben hast solltest du bei deinem schlüssel auch nicht nur dieses 0 => 7 und 1 => 8 verwenden das macht deinen schlüssel ziemlich sinnlos weil es dann egal bei welchem schlüssel immer nur 2 möglichkeiten pro zeichen gibt und das ist alles andere als sicher weil man ja nur ein bisschen umher probieren muss btw hast du die wörter encoden und decoden verwechselt ein decoder entschlüsselt und nicht umgekehrt
__________________ http://livehabo.hackerboard.de | http://livebb.sourceforge.net |
| | |
| | #6 (permalink) |
| Themenstarter Registriert seit: 20.05.03 ![]() Likes: 0 | das x ist kein trennzeichen, sondern wird impletiert wenn das produkt aus schlüssel und string nicht 3 stellig ist. trennzeichen(leerstellen) werden wie normale zeichen generiert, also auch mitverschlüsselt... EDIT:das hier wár mein erster krypt versuch habe davor nur mal was von der caesar verschlüsselung gelesen, vielleicht beschäftige ich mich mal genauer mit dem thema verschlüsselung, der hier verwendete algo war einfach so "aus dem ärmer geschüttelt" ... EDIT2: Warum funzt das nicht: j := 1; for i := 1 to length(memo1.text) do begin code := memo1.Text[j] + memo1.Text[j+1]; ascii := strtofloat(code)/strtofloat(key[i]); j := j + 2; end; danke schonmal |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| externe "Krypto-HDD" geknackt | sTEk | Hardware Probleme | 5 | 03.03.08 21:35 |
| Welcher Algorithmus in Verbindung mit wie langem Passwort ist wie sicher? | die-FreSSe | Cryptography & Encryption | 11 | 15.03.07 19:11 |
| Krypto - Spiele | ghost | Cryptography & Encryption | 11 | 12.12.05 16:24 |
| Jentzsch Krypto-Wettbewerb | AgentFox | Cryptography & Encryption | 17 | 05.07.05 13:20 |
| Blowfisch Algorithmus sicher? | study19 | Cryptography & Encryption | 5 | 19.03.04 15:27 |