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
 
Ghostwalker

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

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
 


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 23:39 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