AGB  ·  Datenschutz  ·  Impressum  







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

Delphi PGP auf Android und Windows

Ein Thema von Ghostwalker · begonnen am 28. Apr 2020 · letzter Beitrag vom 29. Apr 2020
Antwort Antwort
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Delphi PGP auf Android und Windows

  Alt 28. Apr 2020, 19:11
Hmm...dein Demo sieht danach aus, als wenn es genau das macht was ich mir vorstelle (zumindest zum Teil).

Wie schon beschrieben, ist das Problem mit Lockbox3 einfach, das ich die generierten Schlüssel (und hier kommt ja RSA zum Einsatz) nicht seperat ansprechen kann. Generiert werden, lt. Entwickler von LB3, 4 Schlüssel (Jeweils Public und Private für Signing und für Encryption). Aber die Komponente lässt nur zu, das ganze in einem Stream zu speichern. Hier kann ich auch nur zwischen Nur Public, Nur Private oder beides wählen. Das ist aber, einfach ausgedrückt, ein bischen blöd, wenn man das ganze in seperate Felder eine DB schreiben will (Ja..geht auch per Blob, is aber eher suboptimal).

Wäre super, wenn du mir mal den Source des Demos per PN zukommen lassen könntest
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Delphi PGP auf Android und Windows

  Alt 28. Apr 2020, 20:03
also die generierten Schlüssel in RSA kannst du abspeichern. Das war auch mein Problem.
Wichtig ist dass cn-pack und lockbox installiert sind, dann sollte es mit dem Programm auch klappen.
ggf. kann das Programm auch noch für Deine Zwecke erweitert werden. Ich habe das Ganze nur für mich aus Spaß an der Freunde programmiert, um zu sehen, wie es mit großen Zahlen tatsächlich funktioniert. Ja es funktioniert und ich habe es mit Freunden schon mal ausprobiert.
Angehängte Dateien
Dateityp: zip rsa3a.zip (20,7 KB, 6x aufgerufen)
Norbert

Geändert von EdAdvokat (29. Apr 2020 um 07:37 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.091 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi PGP auf Android und Windows

  Alt 28. Apr 2020, 20:56
Interessantes Thema.

Wäre es technisch möglich, unter Verwendung der RSA Uterstützung von Lockbox 3,
eine Delphi App zu schreiben die als Server für ein IoT Gerät im selben TCP/IP Netzwerk
dient?
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Delphi PGP auf Android und Windows

  Alt 29. Apr 2020, 05:06
@EdAdvokat

Danke schonmal. Werd mir das dann gleich mal reinziehen.

@Turbo

Sicherlich, das Prinzip ist ja im Endeffekt das gleiche, egal ob ich nun ein Smartphone oder ein anderes Gerät nutze. Die beiden Stellen müssen lediglich ihre Public Keys austauschen und schon kannst du die Übertragungen verschlüsseln.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Delphi PGP auf Android und Windows

  Alt 29. Apr 2020, 08:19
So..laufen tuts schon mal grunsätzlich. Danke hier schonmal für die Hilfe.

Fazit:

Es werden wirklich 4 Keys erstellt. Jeweils Private und Public für Signing und Encryption/Decryption. Leider lassen sich nur Public und Private unterscheiden. Da ich das ganze in einer DB speichere, bin ich jetzt den Weg über Blob's in der DB gegangen.

Hier mal einige Codeschnippsel aus meinem Testprogramm. Ich benutz hier Lockbox3 (manuell installiert) sowie FireDAC mit einer SQLite-DB.

Generieren der Keys und Speichern in der DB:

Delphi-Quellcode:
var
  tmsPub : TMemoryStream;
  tmsPriv : TMemoryStream;

begin
  memo1.Lines.Clear;
  if (Signatory1.GenerateKeys) then
  begin
    tmsPub := TMemoryStream.create;
    tmsPriv := TMemoryStream.create;
    Signatory1.StoreKeysToStream(tmsPub,[partPublic]);
    Signatory1.StoreKeysToStream(tmsPriv,[partPrivate]);
    (* Seek streams to 0 *)
    tmspub.Seek(0,soBeginning);
    tmsPriv.Seek(0,soBeginning);

    Memo1.Lines.Append('Writing to DB');
    fdquery.SQL.Text := 'INSERT INTO justkeys (jk_data) values (:blobdata)';
    fdquery.Params[0].DataType := ftBlob;
    fdquery.Params[0].AsStream := tmspub;
    fdquery.ExecSQL;
    fdquery.Params[0].AsStream := tmsPriv;
    fdquery.ExecSQL;
    memo1.Lines.Append('DONE !!');
  end;
end;
Und dann Laden und Verschlüsseln:

Delphi-Quellcode:
procedure TForm53.Button2Click(Sender: TObject);
var
  base64String : String;
  InputStr : String;
  OutputStr : String;
  tmp : TStream;
  PubKeys : TMemoryStream;
  Privkeys : TMemoryStream;

begin
  PubKeys := TMemoryStream.Create;
  PrivKeys := TMemoryStream.Create;
  Memo1.Lines.Append('Loading Keys from DB');
  fdquery.SQL.Text := 'SELECT jk_data FROM justkeys where jk_uid = 7';
  fdquery.Open;
  fdquery.first;
  tmp := fdquery.CreateBlobStream(fdquery.FieldByName('jk_data'),TBlobStreamMode.bmRead);
  PubKeys.LoadFromStream(tmp);
  tmp.Free;
  fdquery.Close;

  fdquery.SQL.Text := 'SELECT jk_data FROM justkeys where jk_uid = 8';
  fdquery.open;
  fdquery.First;
  tmp := fdquery.CreateBlobStream(fdquery.FieldByName('jk_data'),TBlobStreamMode.bmRead);
  PrivKeys.LoadFromStream(tmp);
  tmp.Free;
  fdquery.Close;
  Memo1.Lines.Append('Keys Loaded !');
  Pubkeys.Seek(0,soBeginning);
  Privkeys.Seek(0,soBeginning);
  Signatory1.LoadKeysFromStream(pubkeys,[partPublic]);
  Signatory1.LoadKeysFromStream(privkeys,[partPrivate]);
  InputStr := 'Das ist ein sehr schöner Text zum testen der verschlüsselung';
  codecRSA.EncryptString(InputStr,base64String,TEncoding.Unicode);
  memo1.Lines.Append('Encryption: ');
  memo1.Lines.Append('Plaintext: '+InputStr);
  memo1.Lines.Append('Encrypted (Base64)');
  memo1.Lines.Append(base64String);
  memo1.Lines.Append('');
  codecRSA.DecryptString(OutputStr,base64String,TEncoding.Unicode);
  memo1.Lines.Append('Decrypted:');
  memo1.Lines.Append(outputStr);
  Pubkeys.Free;
  privkeys.Free;
end;
Gruß Ghostwalker
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.091 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi PGP auf Android und Windows

  Alt 29. Apr 2020, 21:44
@EdAdvokat

Danke schonmal. Werd mir das dann gleich mal reinziehen.

@Turbo

Sicherlich, das Prinzip ist ja im Endeffekt das gleiche, egal ob ich nun ein Smartphone oder ein anderes Gerät nutze. Die beiden Stellen müssen lediglich ihre Public Keys austauschen und schon kannst du die Übertragungen verschlüsseln.
Danke für die Antwort. Ich hatte vergessen zu erwähnen, dass der Server eine Android App sein soll.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz