AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String Blowfish verschlüsseln OHNE DEC
Thema durchsuchen
Ansicht
Themen-Optionen

String Blowfish verschlüsseln OHNE DEC

Ein Thema von Escalade · begonnen am 29. Jun 2006 · letzter Beitrag vom 5. Jul 2006
Antwort Antwort
Seite 1 von 3  1 23      
Escalade

Registriert seit: 29. Jun 2006
9 Beiträge
 
#1

String Blowfish verschlüsseln OHNE DEC

  Alt 29. Jun 2006, 15:33
Hallo!
Ich möchte einen String mittels Blowfish verschlüsseln und entschlüsseln. Dazu möchte ich eine möglichst schlanke und einfache Unit schreiben. Ich möchte dabei *nicht* das DEC benutzen, da mein Code später in eine Standardsoftware einfliesst und es nicht möglich ist, das doch recht umfangreiche DEC einzubinden.

Ich habe schon mehrere Stunden Recherche im Netz und hier im Forum investiert, aber bin leider nicht fündig geworden.

Leider reicht mein Kryptographiewissen auch nicht aus, um selbst eine solche Klasse/Unit zu schreiben. Auch die entsprechenden Funktionalitäten aus dem DEC zu ziehen, ist mir nicht gelungen.

Daher meine Frage, ob jemand vielleicht schon sowas gelöst hat und mir zur Verfügung stellen könnte oder einen hilfreichen Link hat. Vielleicht kann auch jemand den Code dafür hier posten, wenn es nicht dem Umfang sprengt. Ideal wäre eine schlanke und einfache Implementierung des Blowfish Algorithmus und Funktionen zum Codieren und Decodieren.

Danke für Eure Antworten und Hilfestellungen!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 29. Jun 2006, 15:37
Hallo,

kannst im Web mal nach LockBox suchen.
Das sind Komponeten zum verschlüsseln.

und der Link dazu -> http://sourceforge.net/projects/tplockbox/

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 29. Jun 2006, 15:53
Zitat von Escalade:
Ich möchte dabei *nicht* das DEC benutzen, da mein Code später in eine Standardsoftware einfliesst und es nicht möglich ist, das doch recht umfangreiche DEC einzubinden.
Was verstehst du unter "einbinden"? Das DEC fügst du ganz normal als Unit in den uses hinzu und benutzt die Fuktionen, fertig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Escalade

Registriert seit: 29. Jun 2006
9 Beiträge
 
#4

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 29. Jun 2006, 15:58
Hi,
die Lockbox werde ich mir mal anschauen, danke für den Tipp.

@Luckie: Ja, ich weiss, aber ich hätte gerne etwas weniger umfangreiches.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 29. Jun 2006, 16:59
Lockbox wird aber noch mehr deine Source und die fertigen Module aufblähen.

Bindest du das neue DEC 5.1. ein kann ich dir garantieren das fast keinerlei zusätlicher Overhead ausser dem Blowfish Algo. eingebunden wird. Das ist ja gerade ein wichtiger Verbesserungpunkt im DEC 5.1. Aber das ist letzendlich deine Entscheidung.

Gruß Hagen
  Mit Zitat antworten Zitat
Escalade

Registriert seit: 29. Jun 2006
9 Beiträge
 
#6

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 30. Jun 2006, 09:22
Hallo nochmal,
ich sehe ich habe mir das wohl auch etwas zu einfach vorgestellt. Ich werde dann jetzt doch mal das dec versuchen. Ich danke Euch auf jedenfall für Eure Antworten!
Ciao
  Mit Zitat antworten Zitat
Escalade

Registriert seit: 29. Jun 2006
9 Beiträge
 
#7

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 30. Jun 2006, 10:25
Vielleicht könnt ihr mir bei benutzen des DEC Hilfe geben, ich blicke da nicht ganz durch.

Meine Unit bekommt einen Blowfish-Verschlüsselten Querystring übergeben (base64 encoded), das Passwort weiss ich. Ich möchte diesen verschlüsselten Querystring nun einfach nur entschlüsseln und als String weiternutzen. Wie mache ich das am besten? Ich habe mir aus einem Post von Hagen mal die untenstehende Funktion herauskopiert und leicht modifiziert, aber noch läuft da nichts:

Delphi-Quellcode:
unit ucpDecryptExternQueryString;
...
uses ..., DECCipher, DECUtil, DECRandom, DECHash;
...

function TCPDecryptExternQueryString.Decipher: string;
begin
  with TCipher_Blowfish.Create do
  try
    Mode := cmCTSx; // <--- Welchen Mode nehme ich hier am besten?
    Init('Passwort');
    Result := DecodeBinary('Test Nachricht', TFormat_HEX); // <---- Frage 2
  finally
    Free;
  end;
end;
Meine Fragen:
1. Welchen Mode muss ich nutzen, und warum? Den Querystring, den ich übergeben bekomme, kommt von einem Portal dessen Code ich nicht kenne und ich weis nicht, mit welchen Mitteln dort Blowfish-Verschlüsselt wird. Muss dort zum entschlüsseln derselbe Mode verwendet werden? Ich habe von Kryptografie leider so garkeine Ahnung.

2. Ist DecodeBinary hier die richtige wahl? Ich habe ja einen String und will einen String...

3. Was fehlt in der obigen Unit sonst noch, damit die entschlüsselung läuft? Delphi (7) meckert bei mir z.B. auch, dass er TFormat_HEX nicht kennt.

Vielen Dank schonmal im Vorraus für Eure Hilfe. Ich denke das auch viele andere Forumsleser davon profitieren können.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 30. Jun 2006, 10:51
Ok ich stelle par Fragen und du antwortest mit JA/NEIN


1.) das Passwort ändert sich nur sehr wenig, weil es in der EXE steht ?

2.) du möchtest vorrangig kurze Strings schützen ?

3.) verschlüsselst du oft mit diesen einem Passwort auch die gleichen Strings ? Heist also ein String wie "Test" wird öfters ver/entschlüsselt !

4.) wie sicher muß das alles werden ? sehr sicher ?


Gruß Hagen
  Mit Zitat antworten Zitat
Escalade

Registriert seit: 29. Jun 2006
9 Beiträge
 
#9

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 30. Jun 2006, 10:58
Zitat:
1.) das Passwort ändert sich nur sehr wenig, weil es in der EXE steht ? Ja, ändert sich nie

2.) du möchtest vorrangig kurze Strings schützen? Länge ca. 25-350 chars

3.) verschlüsselst du oft mit diesen einem Passwort auch die gleichen Strings ? Heist also ein String wie "Test" wird öfters ver/entschlüsselt! Ich verschlüssele nie, ich muss nur entschlüsseln. Das Verschlüsseln macht jemand anderes.

4.) wie sicher muß das alles werden ? sehr sicher ? Relativ sicher, aber ohne zu großen Aufwand.
Das enschlüsseln passiert pro Request genau einmal, also nicht all zu häufig.

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: String Blowfish verschlüsseln OHNE DEC

  Alt 30. Jun 2006, 14:31
Ok.

Bei kurzen Strings immer einen starken Feadback Modus benutzen der mit kleinem Feedback arbeitet. Also zb. cmCFB8 ist eine gute Wahl oder cmCFS8 wäre noch besser ist aber eine prohibitäre Entwicklung meinerseits. Solche Modis sind ca. 8 bis 16 mal langsammer als zv. cmCBCx oder cmCFSx dafüer aber gerade bei kurzen Daten weitaus sicherer.

Da sich das Passwort nicht verändert sollte man sicherstellen das wenigsten der verschlüsselte Output ein und derselben Nachricht sich ständig ändert. Das geht nätürlich nur wenn diese Nachricht sich virtuell jedesmal ändert. Lang Rede kurzer Sinn. Vor der Verschlüsselung deines Strings solltest du diesen mit 1-4 Bytes Zufallsdaten am Anfang des Strings ergänzen. Das führt dazu das der gleiche Text immer komplett anderen verschlüsselten Output erzeugt und somit ein Angreifer keine schnellen Angriffe mehr durchführen kann.
Das ist qausi wie ein Passwort Salt nur eben innerhalb der Nachricht. Der Feedback Modus cmCFB8 wird dann dafür sorgen das sich diese 1-4 Bytes Zufall komplett durch die ganze Verschlüsselungen deines Strings zieht.

Dir sollte aber klar sein das durch die Benutzung des festen Passwortes für alle Daten eine Alles oder Nichts Sicherheit ergibt. Wurde der Keys einmal geknackt sind alle deine Daten unsicher.

So nun ein par Sourcen

Delphi-Quellcode:
const
  Password: TGUID = {1234-1234-....} // mit Strg+G+G eine eigene GUID erzeugen
// das Password ist binär und nicht so schnell und direkt mit stupidem HEX Editor zu lesen
  
  CipherClass: TDECCipherClass = TCipher_Blowfish;
  CipherMode: TDECCipherMode = cmCFB8;
  SaltLenght: Integer = 4;
  TextFormat: TDECFormat = TFormat_MIME64;

function Encrypt(const Value: String): String;
begin
  with ValidCipher(CipherClass).Create do
  try
    Mode := CipherMode;
    Init(Password, SizeOf(Password));
    Result := EncodeBinary(RandomBinary(SaltLength) + Value, TextFormat);
  finally
    Free;
  end;
end;

function Decrypt(const Value: String): String;
begin
  with ValidCipher(CipherClass).Create do
  try
    Mode := CipherMode;
    Init(Password, SizeOf(Password));
    Result := System.Copy(SaltLength +1, MaxInt, DecodeBinary(Value, TextFormat));
  finally
    Free;
  end;
end;
Du kannst nun selber ausrechnen wie groß ein verschlüsselter String in der Länge sein wird,

MIME64_Länge := (Salt_Länge + String_Länge + 3) div 3 * 4

Ein 256 Zeichenstring ist also (256 + 4 + 3) div 3 * 4 = 348 Zeichen lang als MIME Base 64 formatierter und verschl. String.

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 09:41 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