![]() |
Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)
Ich habe eine Unit die einfach Decrypt/Enrypt macht. (Passwörter etc.) Die verschlüsselte Werte stehen z.B. in der DB. Da ich mal modernisieren wollte, nehme ich eben mal DEC6.0...:wink: Da ich von der Thematik keine Ahnung habe, brauche ich Hilfe. Die Umstellungen sind zu groß. :? Bis ValidHash(HashClass).KDFx = undeklariert bin ich gekommen. Dann habe ich aufgegeben. PS: Die alten Passwörter müssen auch wieder lesbar sein...:wink: PS: Eine Erklärung wäre auch schön. :wink: Danke. |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
:cry:
|
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Muss ich mir mal anschauen, heute wird's aber eher nix, eher morgen.
Zuerst muss man die Units ändern, die sind ja umbenannt und teilweise weiter unterteilt. |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Hi,
Zitat:
I can do it even i have never used DEC v5 and have very shallow knowledge with v6, but i believe i can figure it out, BUT i need few things to make sure not wasting my time and yours: 1) the original code, the code was/is working with DEC v5.1, not a modified one. 2) Three handled/hashed data A) a v5.1 hashed/encrypted password with length less than 7 chars, the password it self is not needed. B) a v5.1 hashed/encrypted password with length more than 16 chars, the password it self is not needed. C) a v5.1 password with hashed/encrypted form, the length preferably less than 7. D) repeat the above in English chars only, also one more with copy of A,B and C with Unicode chars or some exotic characters if your application allow it. These are important for every one (specially you) to make sure the new code is compatible and will not break you DB. |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
@TurboMagic
Dankeschön...keinen Stress. 8-) Vieleicht hast auch dann mal 5 Minuten Zeit, mir das "Grundprinzip" (Was brauche ich wofür...für die Zukunft) zu erkären. Danke... Nachtrag: Ich stelle die Daten mal zusammen... |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Hast du auch schon mal in den DOCS Unterordner geschaut?
Da ist eine Doku drin... ;-) Ich glaub' sogar einigermaßen umfangreich, was für ein Open Source Projekt nicht unbedingt üblich ist... ;-) |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Yes, that would be good to have!
|
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Zitat:
Delphi-Quellcode:
unit Tools.Crypt;
interface uses System.SysUtils, DECUtil, DECHash, //DECCipher, DECFmt; DECHashBase, DECCipherBase, DECCiphers, DECFormatBase, DECFormat, DECHashAuthentication, DECRandom; const conKey = 'aYr14iaz8u)xO7Ok'; var CipherMode: TCipherMode = cmCBCx; HashClass: TDECHashClass = THash_SHA256; TextFormat: TDECFormatClass = TFormat_MIME64; KDFIndex: LongWord = 1; type TToolsCrypt = class public class function Decrypt(aHash: string; aKey: string = ''): string; class function Encrypt(aText: string; aKey: string = ''): string; end; implementation { TToolsCrypt } class function TToolsCrypt.Decrypt(aHash, aKey: string): string; var Cipher: TCipher_Rijndael; Salt: RawByteString; //Binary; Data: RawByteString; Check: RawByteString; Pass: RawByteString; PassBytes: TBytes; Len: Integer; begin if aKey = '' then begin aKey := conKey; end; Cipher := TCipher_Rijndael.Create; try Salt := ValidFormat(TextFormat).Decode(RawByteString(aHash)); Len := Length(Salt) - 16 - Cipher.Context.BufferSize; Data := Copy(Salt, 17, Len); Check := Copy(Salt, Len + 17, Cipher.Context.BufferSize); SetLength(Salt, 16); PassBytes := TDECHashAuthentication(ValidHash(HashClass)).KDFx(aKey[1], Length(aKey) * 2, Salt[1], Length(Salt), Cipher.Context.KeySize, KDFIndex); SetLength(Pass, Length(PassBytes)); Move(PassBytes[0], Pass[low(Pass)], Length(PassBytes)); Cipher.Mode := CipherMode; Cipher.Init(Pass); SetLength(Result, Len div 2); Cipher.Decode(Data[1], Result[1], Len); if Check <> Cipher.CalcMAC then begin Result := ''; end; finally Cipher.Free; //ProtectBinary(Salt); ProtectString(Salt); ProtectString(Data); ProtectString(Check); ProtectString(Pass); end; end; class function TToolsCrypt.Encrypt(aText, aKey: string): string; var Cipher: TCipher_Rijndael; SaltBytes : TBytes; Salt: RawByteString; //Binary; Data: RawByteString; //Binary; Pass: RawByteString; //Binary; PassBytes: TBytes; begin if aKey = '' then begin aKey := conKey; end; Cipher := TCipher_Rijndael.Create; try SaltBytes := RandomBytes(16); //RandomBinary(16); SetLength(Salt, Length(SaltBytes)); Move(SaltBytes[0], Salt[low(Salt)], Length(SaltBytes)); PassBytes := TDECHashAuthentication(ValidHash(HashClass)).KDFx(aKey[1], Length(aKey) * 2, Salt[1], Length(Salt), Cipher.Context.KeySize, KDFIndex); SetLength(Pass, Length(PassBytes)); Move(PassBytes[0], Pass[low(Pass)], Length(PassBytes)); Cipher.Mode := CipherMode; Cipher.Init(Pass); SetLength(Data, Length(aText) * 2); Cipher.Encode(aText[1], Data[1], Length(Data)); Result := string(ValidFormat(TextFormat).Encode(Salt + Data + Cipher.CalcMAC)); finally Cipher.Free; ProtectString(Salt); ProtectString(Data); ProtectString(Pass); end; end; end.
DU erwänst oben DEC 6.0. Meinst du wirklich 6.0 oder eine neuere? Falls 6.0 warum nutzt du diese und nicht eine neuere? Grüße TurboMagic |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Liste der Anhänge anzeigen (Anzahl: 5)
Moin...8-)
Zitat:
Danke für deine Zeit...:cheer::kiss: Ich melde mich mit dem Ergebnis. :wink: Rückmeldung: Zugriffsverletzung im "TDECHashAuthentication" (Video) Anbei: 1. Project für Crypt/Decrypt 2. Source 5.2 3. Source 6.4.1 4. Muster SQL normal/Crypt |
AW: Hilfe bei Umstellung Unit DEC5.1 zu DEC6.0
Wie es aussieht gibt es in diesem Thread nichts Neues - oder doch? Hat sich TurboMagic mal wieder dazu gemeldet?
Ich habe auch versucht das Projekt zum laufen zu bringen und komme erwartungsgemäß ebenfalls nur bis zur Exception Accsess Violation, wie im Video anschaulich dargestellt. Meine bescheidenen Debuggig-Versuche erbrachten kein brauchbares Eregnis. Also wohl Ergebnislosigkeit in dieser Sache KDF. @haentschman: Welche Werte speicherst Du in der DB? verwendest Du die Schlüssel für ein symetrisches Chiffrierverfahren oder für andere Zwecke? In meinem KeyGenerations-Programm erstelle ich aus einem Master-Key diverse Key-Ableitungen, die ich dann nummerisch sortiert speichere. Dazu nutze ich HAMAC und wahlweise auch BCrypt-Algos. Somit wäre es möglich, dass ausgehend von einem Master-Key, der den Kommunikationspartnern bekannt ist, diese wiederum Key-Ableitungen vornehmen und speichern. So könnte dann beispielsweise mit der 5. Key-Ableitung eine AES-Chiffrierung vorgenommen werden. Diese Key-Liste ist natürlich besonders schützenswert und daher als Ganzes ebenfalls zu sichern. Welche Erfahrungen hast Du praktisch mit der Key-Ableitung (KDF) gemacht? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz