AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Funktion von altem DEC in neues DEC 6.3

Ein Thema von Hobbycoder · begonnen am 6. Okt 2025 · letzter Beitrag vom 7. Okt 2025
 
Hobbycoder

Registriert seit: 22. Feb 2017
1.021 Beiträge
 
#1

Funktion von altem DEC in neues DEC 6.3

  Alt 6. Okt 2025, 18:15
Hi,

Ich brauche mal eure Hilfe. Hier gibt es doch bestimmt ein paar DEC-Spezialisten.
Ich haben einen alten Code, den ich vor Jahren mal irgendwo herbekommen habe. Für die damalige DEC-Version.

Nun gibt es ja die DEC 6.3 für D12, wo dieser nicht mehr läuft. Mein Wissen bezüglich DEC beschränkt sich leider aus das absolute Minimum, so dass ich selbst nicht in der Lage bin ihn auf 6.3 anzupassen.
Mit den beiden Funktionen Encrypt und Decrypt habe ich für eine INI-Datei Passwörter verschlüsselt.
In dem Parameter AText wird jeweils das zu verschlüsselnde Passwort angegeben, und im APassword ein Key, mit dem Verschlüsselt wurde.
Nun könnte ich natürlich die Funktionen komplett austauschen, dann würden jedoch die bereits gespeicherten Daten nicht mehr korrekt gelesen werden können.
Also wäre es toll, wenn man das mit DEC 6.3 hinbekäme, dass die Funktionen so weiterlaufen können.

(Ist auch als Datei angehängt)

Delphi-Quellcode:
unit u_scsettings;

interface

uses System.Classes, System.IniFiles, System.SysUtils, System.Generics.Collections,
   DECUtil, DECCipher, DECHash, DECFmt, Vcl.Dialogs, u_tools;

var
  ACipherClass: TDECCipherClass = TCipher_Rijndael;
  ACipherMode: TCipherMode = cmCBCx;
  AHashClass: TDECHashClass = THash_Whirlpool;
  ATextFormat: TDECFormatClass = TFormat_MIME64;
  AKDFIndex: LongWord = 1;

implementation

function Encrypt(const AText: string; const APassword: string): string;
var
  ASalt: Binary;
  AData: Binary;
  APass: Binary;
begin
  with ValidCipher(ACipherClass).Create, Context do
  try
    ASalt := RandomBinary(16);
    APass := ValidHash(AHashClass).KDFx(APassword[1], Length(APassword) * SizeOf(APassword[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex);
    Mode := ACipherMode;
    Init(APass);
    SetLength(AData, Length(AText) * SizeOf(AText[1]));
    Encode(AText[1], AData[1], Length(AData));
    Result := ValidFormat(ATextFormat).Encode(ASalt + AData + CalcMAC);
  finally
    Free;
    ProtectBinary(ASalt);
    ProtectBinary(AData);
    ProtectBinary(APass);
  end;
end;

function Decrypt(const AText: String; const APassword: String; var Failed: Boolean): String;
var
  ASalt: Binary;
  AData: Binary;
  ACheck: Binary;
  APass: Binary;
  ALen: Integer;
begin
  with ValidCipher(ACipherClass).Create, Context do
  try
    ASalt := ValidFormat(ATextFormat).Decode(AText);
    ALen := Length(ASalt) - 16 - BufferSize;
    AData := System.Copy(ASalt, 17, ALen);
    ACheck := System.Copy(ASalt, ALen + 17, BufferSize);
    SetLength(ASalt, 16);
    APass := ValidHash(AHashClass).KDFx(APassword[1], Length(APassword) * SizeOf(APassword[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex);
    Mode := ACipherMode;
    Init(APass);
    SetLength(Result, ALen div SizeOf(AText[1]));
    Decode(AData[1], Result[1], ALen);
    Failed:= ACheck <> CalcMAC;
  finally
    Free;
    ProtectBinary(ASalt);
    ProtectBinary(AData);
    ProtectBinary(ACheck);
    ProtectBinary(APass);
  end;
end;

end.
Dank an alle.
Angehängte Dateien
Dateityp: pas u_scsettings.pas (2,1 KB, 1x aufgerufen)
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:42 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