AGB  ·  Datenschutz  ·  Impressum  







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

AnsiString speichern und laden

Ein Thema von Willie1 · begonnen am 9. Mär 2021 · letzter Beitrag vom 16. Mär 2021
Antwort Antwort
mytbo

Registriert seit: 8. Jan 2007
479 Beiträge
 
#1

AW: AnsiString speichern und laden

  Alt 14. Mär 2021, 20:50
@Willie1: Auch wenn du es nicht hören wolltest, Kryptografie ist mit den richtigen Units vernünftig umzusetzen. Nimm besser die folgenden Funktionen:
Delphi-Quellcode:
uses
  SynCommons, SynCrypto, SynZip;

const
  KEY_FILE_HEADER = 'TOPSECRET';
  KEY_FILE_HEADER_SIZE = Length(KEY_FILE_HEADER);

function SaveToFile(const pmcRaw, pmcPassword: RawByteString; const pmcFileName: TFileName): Boolean;
begin
  Result := False;
  if (pmcRaw <> '')
    and (pmcPassword <> '')
    and (DirectoryExists(ExtractFilePath(pmcFileName))) then
  begin
    Result := FileFromString(KEY_FILE_HEADER + SynCrypto.AESSHA256(SynZip.CompressString(pmcRaw), pmcPassword, True), pmcFileName);
  end;
end;

function LoadFromFile(const pmcFileName: TFileName; const pmcPassword: RawByteString; out pmcRaw: RawByteString): Boolean;
var
  sSrc, sOut: RawByteString;
begin
  Result := False;
  if (pmcPassword <> '')
    and FileExists(pmcFileName) then
  begin
    sSrc := StringFromFile(pmcFileName);
    if (sSrc <> '')
      and (PosEx(KEY_FILE_HEADER, sSrc, 1) = 1) then
    begin
      SetString(sOut, Nil, Length(sSrc) - KEY_FILE_HEADER_SIZE);
      SynCrypto.AESSHA256(PAnsiChar(sSrc) + KEY_FILE_HEADER_SIZE, Pointer(sOut), Length(sOut), pmcPassword, False);
      pmcRaw := SynZip.UnCompressString(sOut);
      Result := (pmcRaw <> '');
    end;
  end;
end;
Anwenden kannst du das wie folgt:
Delphi-Quellcode:
procedure TForm1.btnSaveClick(Sender: TObject);
begin
  if SaveToFile(StringToUTF8(memoTopSecret.Text), 'Willie1', ChangeFileExt(ParamStr(0), '.key')) then
    memoTopSecret.Clear;
end;

procedure TForm1.btnLoadClick(Sender: TObject);
var
  secStr: RawByteString;
begin
  if LoadFromFile(ChangeFileExt(ParamStr(0), '.key'), 'Willie1', secStr) then
    memoTopSecret.Text := UTF8ToString(secStr);
end;
Bis bald...
Thomas
  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 19:38 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