Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

eigener krypto algorithmus sicher?

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 ...

Antwort
Alt 07.02.04, 00:58   #1 (permalink)
 
Registriert seit: 20.05.03
Stromer Leistung: Facit NTK
Likes: 0
Standard eigener krypto algorithmus sicher?

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

Stromer ist offline   Mit Zitat antworten
Alt 07.02.04, 14:19   #2 (permalink)
Themenstarter
 
Registriert seit: 20.05.03
Stromer Leistung: Facit NTK
Likes: 0
Standard

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 ...
Stromer ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 07.02.04, 15:38   #3 (permalink)
Ray
 
Registriert seit: 06.08.02
Ray Leistung: Facit NTK
Likes: 0
Standard

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'

...
Ray ist offline   Mit Zitat antworten
Alt 07.02.04, 15:42   #4 (permalink)
Themenstarter
 
Registriert seit: 20.05.03
Stromer Leistung: Facit NTK
Likes: 0
Standard

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 ...
Stromer ist offline   Mit Zitat antworten
Alt 07.02.04, 20:16   #5 (permalink)
Member of Honour
 
Benutzerbild von ivegotmail
 
Registriert seit: 28.05.03
ivegotmail Leistung: Z3
Likes: 1
Standard

"einen string in eine zeichenkette codieren" - hört sich gut an aber passt schon

also 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
ivegotmail ist offline   Mit Zitat antworten
Alt 07.02.04, 20:44   #6 (permalink)
Themenstarter
 
Registriert seit: 20.05.03
Stromer Leistung: Facit NTK
Likes: 0
Standard

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
Stromer ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » eigener krypto algorithmus sicher?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ä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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61