AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit DCPcrypt

Ein Thema von DLX · begonnen am 24. Mai 2018 · letzter Beitrag vom 18. Jun 2018
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
DLX

Registriert seit: 17. Apr 2018
20 Beiträge
 
#31

AW: Probleme mit DCPcrypt

  Alt 28. Mai 2018, 13:02
alles klar, vielen Dank!!!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Probleme mit DCPcrypt

  Alt 28. Mai 2018, 13:09
Ein IV := 'DLX' könnte dann crashen.
Nee, aber ein Key := 'DLX', da braucht man die 16bytes. IV kann auch '' sein.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#33

AW: Probleme mit DCPcrypt

  Alt 28. Mai 2018, 13:52
Ein IV := 'DLX' könnte dann crashen.
Nee, aber ein Key := 'DLX', da braucht man die 16bytes. IV kann auch '' sein.
Sehe ich anders:
Bezüglich Schlüssel:
Delphi-Quellcode:
procedure TDCP_rijndael.InitKey(const Key; Size: longword);
var
  KC, ROUNDS, j, r, t, rconpointer: longword;
  tk: array[0..MAXKC-1,0..3] of byte;
begin
  Size:= Size div 8;

  FillChar(tk,Sizeof(tk),0);
  Move(Key,tk,Size);
  if Size<= 16 then
  begin
    KC:= 4;
    Rounds:= 10;
  end
  else if Size<= 24 then
  begin
    KC:= 6;
    Rounds:= 12;
  end
  else
  begin
    KC:= 8;
    Rounds:= 14;
  end;
und bei den IVs
Delphi-Quellcode:
procedure TDCP_blockcipher128.SetIV(const Value);
begin
  if not fInitialized then
    raise EDCP_blockcipher.Create('Cipher not initialized');
  Move(Value,IV,16);
  Reset;
end;
bzw
Delphi-Quellcode:
procedure TDCP_blockcipher128.Init(const Key; Size: longword; InitVector: pointer);
begin
  inherited Init(Key,Size,InitVector);
  InitKey(Key,Size);
  if InitVector= nil then
  begin
    FillChar(IV,16,{$IFDEF DCP1COMPAT}$FF{$ELSE}0{$ENDIF});
    EncryptECB(IV,IV);
    Reset;
  end
  else
  begin
    Move(InitVector^,IV,16);
    Reset;
  end;
end;
Du kannst also einen nil-pointer übergeben, es werden dann 16 Bytes 0 verwendet (DLX := '' ist wie nil-pointer), aber ansonsten werden mit dem move immer 16 Bytes benötigt. (Es muß aber nicht zum Crash kommen, je nach Speicherlage). Wenn's nicht crasht können durch Zufallsbelegungen unterschiedlich IVs entstehen, und das Ergebnis ist fehlerhaft.

Debugger für IV := '1';

Encrypt-IV: ( 49, 0, 0, 0, 50, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0)
Decrypt-IV: ( 49, 0, 0, 0, 4, 22, 70, 0, 216, 31, 186, 1, 224, 50, 0, 0)

Die 49 entsprechen '1' der Rest ist mehr oder weniger Zufall.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Probleme mit DCPcrypt

  Alt 28. Mai 2018, 15:33
Ich habe mal ein wenig probiert, stimmt schon mit den initvector, der sollte schon eine fixe 16byte länge haben sonst ist das Ergebnis nicht unbedingt überall gleich.
Am besten wäre vielleicht für den TE sich auf bestehendes zu verlassen, es gibt ja wolfgang-ehrhardt und da finden sich zu vielen AES Verfahren super Lösungen an der nicht mehr rumgefummelt werden muss damit es klappt.
DelphiEncryptionCompendium (DEC) gibt es ja auch noch, nur liegt das Projekt schon ewig brach.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#35

AW: Probleme mit DCPcrypt

  Alt 28. Mai 2018, 16:43
Ich war mal fleißig und habe das FileEncryption Demo umgeschrieben das es mit Strings arbeitet.
Nicht Wundern, beim Generieren von verschlüsselten Text bekommst Du jedes mal ein anderes Ergebis, was beim Entschlüsseln wieder korrekt in den Ausgangs-String umgewandelt wird.
Es sollten alle Ciphers und Hashs enthalten und Unterstützt sein.
Ich habe es noch nicht bis ins kleinste Detail getestet, aber mein Erst-Eindruck = es funktioniert tadellos.

So sieht die GUI aus. vorschau.jpg
Im Anhang ist kompletter Source plus ein Kompilat zum sofort testen.

Anwendung:
1. In oberster Zeile kommt Dein Text zum verschlüsseln rein, ganz unten bei "passphrase" gehört Dein Wunsch-Passwort rein, darunter nochmal zur Bestätigung.
2. Drück "Encrypt" und das Ergebnis ist nun in zweiter Zeile
3. Drück "Decrypt" und in oberster Zeile steht der entschlüsselte Text wieder lesbar.
4. Drück "Close" zum ....

Viel Spass damit!
Angehängte Dateien
Dateityp: 7z StringEncrypt.7z (267,2 KB, 23x aufgerufen)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Probleme mit DCPcrypt

  Alt 30. Mai 2018, 01:15
Finaler Nachtrag
Während vieler Denkpausen bei einem anderen Projekt habe ich immer mal wieder mit dem obigen Programm herumgespielt.
Ich muss feststellen, es ist bombensicher, ich habe keine Möglichkeit entdecken können wie man es knacken kann.
Solange man "in Echtzeit" Passwörter eintippen muss arbeitet dieses Verschlüsselungsverfahren absolut spitze da es nie den gleichen "Crypted Text" generiert. Ich bin total begeistert und wollte mich abschließend nochmal für diesen Thread bedanken durch den ich den Umgang lernte aus TFileStream Speicherstreams zu machen und aus input und output Strings zu generieren.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
DLX

Registriert seit: 17. Apr 2018
20 Beiträge
 
#37

AW: Probleme mit DCPcrypt

  Alt 14. Jun 2018, 15:40
in erster Linie bedanke ich mich für die großartige Hilfe !
Was müsste ich eigentlich machen wenn ich auch Dateien ver- und entschlüsseln wollen würde ?

hab es jetzt wie folt gelöst:
Code:
function encryptFile(inputFile:string; outputFile:string):String;
var Cipher : TDCP_rijndael;
    Data,DataDec, Key, IV : ansistring;
    index, dataLength, bsize, pad: integer;
    Source, Dest: TFileStream;
begin
  key := '12345678901234567890123456789012';
  IV := '1234567890123456';

  Cipher := TDCP_rijndael.Create(nil);
  try
    Cipher.Init(Key[1],128,@IV[1]);
    Source:= TFileStream.Create(inputFile,fmOpenRead);
    Dest:= TFileStream.Create(outputFile,fmCreate);
    Cipher.EncryptStream(Source,Dest,Source.Size);


  finally
    Cipher.Burn;
    Cipher.Free;
    source.Free;
    dest.Free;
  end;

 Result:='fertig';

end;
und zum entschlüsseln:

Code:
function DecryptFile(inputFile:string; outputFile:string):String;
var Cipher : TDCP_rijndael;
    Data, Key, IV : ansistring;
    index, dataLength, bsize, pad: integer;
    Source, Dest: TFileStream;

begin
  key := '12345678901234567890123456789012';
  IV := '1234567890123456';

  Cipher := TDCP_rijndael.Create(nil);
  try
    Cipher.Init(Key[1],128,@IV[1]);
    Source:= TFileStream.Create(inputFile,fmOpenRead);
    Dest:= TFileStream.Create(outputFile,fmCreate);
    Cipher.DecryptStream(Source,Dest,Source.Size);
  finally
    Cipher.Burn;
    Cipher.Free;
    Dest.Free;
    Source.Free;
  end;

  Result:='fertig';


end;

Geändert von DLX (14. Jun 2018 um 16:27 Uhr) Grund: file en/decrypt
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#38

AW: Probleme mit DCPcrypt

  Alt 14. Jun 2018, 19:21
Hier ist das FileEncrypt Demo was ich ober für Dich umgeschrieben hatte, damit sollte nun alles nur erdenkliche Abgedeckt sein. Falls Du da etwas nicht verstehen solltest, frage ruhig nach.

Ps: Ich gehe absichtlich nicht auf Deinen Code ein da er irgendwie falsch ist.

edit
Sorry, ich hatte die Archive verwechselt und das StringEncrypt fälschlicher Weise hochgeladen, hier nun das korrekte!
Angehängte Dateien
Dateityp: 7z FileEncrypt.7z (5,8 KB, 19x aufgerufen)
Gruß vom KodeZwerg

Geändert von KodeZwerg (14. Jun 2018 um 22:18 Uhr)
  Mit Zitat antworten Zitat
DLX

Registriert seit: 17. Apr 2018
20 Beiträge
 
#39

AW: Probleme mit DCPcrypt

  Alt 18. Jun 2018, 13:01
bekomme wenn ich deine Demo öffne den Fehler : no ciphers where found, hab aber alle dateien soweit eingebunden
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#40

AW: Probleme mit DCPcrypt

  Alt 18. Jun 2018, 13:52
Hier ist das komplette Package mit Demos und Source und allem drum und dran so wie ich es in Benutzung habe.
Ich schrieb ja relativ am Anfang das es verschiedene Versionen gibt.
Falls es unangebracht ist dieses Package hier fest zu verlinken, bitte löschen.
Mit dem obigen StringEncrypt ist es komplett so wie bei mir.
(nach Integration in IDE muss der Source Ordner der IDE Library-Path hinzugefügt werden oder den Inhalt in ein Ordner der im Library-Path rein kopieren)
Viel Spass dabei!
Angehängte Dateien
Dateityp: 7z dcpcrypt-code-16-trunk.7z (137,0 KB, 18x aufgerufen)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz