![]() |
Mit LockBox10 für XE7 Hashstring erzeugen
Moin allerseits,
ich muß für einen hiesigen Programmierer herausfinden, wie man einen Hash von einem String erzeugt. Er möchte dazu Lockbox verwenden, weil das bei Bedarf auch für IOS verfügbar sei. Nun habe ich in seiner XE7-IDE ![]() ![]() Hat jemand für mich eine einfache Anleitung, wie man mit LockBox aus einem String einen Hashwert erzeugt? |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
Dazu müsste erst einmal die Entscheidung getroffen werden, welcher Algorithmus verwendet werden soll. Dann sollte das mit
Delphi-Quellcode:
oder
TLbMD5.HashString
Delphi-Quellcode:
gehhen.
TLbSHA1.HashString
|
AW: Mit LockBox10 für XE7 Hashstring erzeugen
Danke für deine Antwort. Bislang hab ich mal folgenden Funktionsrumpf erstellt:
Delphi-Quellcode:
Wie geht's nun weiter?
// ----- Liefert den Hashwert des übergebenen Strings zurück ---------------------------------------------------------------------
Function GetHashedString(Const Awort : String) : String; Var LBH : TLbSHA1; Begin LBH := TLbSHA1.Create(Nil); Try LBH.HashString(Awort); Result := '???'; Finally LBH.Free; End; End; |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
.. der Hash liegt in LBH.HashOutputValue
Siehe auch: ![]() Grüße Klaus |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
Liste der Anhänge anzeigen (Anzahl: 1)
Das mag vielleicht für LockBox3 zutreffen, in LockBox10 (der Version für XE7, die auch mit IOS und Android kompatibel ist), gibt es dieses Property leider nicht. Könnte der berechnete Hash vielleicht im HashBuffer liegen?
Übrigens hab ich einige Stunden lang all diese Hinweise, die Google liefert, bereits erfolglos abgegrast, bevor ich hier anfragte :( |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
.. dann vielleicht getDigest?
Delphi-Quellcode:
Grüße
TLbSHA1 = class(TLbHash)
strict private FDigest : TSHA1Digest; public procedure GetDigest(var Digest : TSHA1Digest); procedure HashBuffer(const Buf; BufSize : Cardinal); override; procedure HashFile(const AFileName: string); override; procedure HashStream(AStream: TStream); override; procedure HashString(const AStr: string); override; end; Klaus |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
... oder vielleicht auch nicht?
TSHA1Digest ist ein Array[0..19] of byte. Wenn dort der Hashstring drin wäre, dann könnte der ja immer nur höchstens 20 Zeichen lang sein. Das erscheint mir fragwürdig. Soweit ich weiß, sind Hash-Strings gewöhnlich um einiges länger. Und wie sollte man aus diesem Array dann einen Hash-String erzeugen? Hat denn wirklich noch niemand mit ![]() |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
Darüber bin ich kürzlich auch gestolpert.
Das, was wir im Allgemeinen als SHA1-Hash zu lesen bekommen, ist die hexcodierte Variante dieser 20 Bytes. Wenn Du Dein Byte-Buffer in Hex (z.B. IntToHex()) wandelst, sollte etwas herauskommen, das dem Auge vertraut ist. |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
Wenn man weiß, was ein Hashwert ist und woraus ein Hashwert ausschließlich gebildet werden kann, dann ist alles viel klarer:
Zitat:
Ein Hauptgrund, warum die meisten beim Hashen auf die Nase fallen "Delphi-PHP", "Delphi-C#", .... liegt daran, dass man beim Hashen das Encoding (String -> Bytefolge) mal nicht beachtet und Delphi nimmt dann UTF-16 und der Rest (meistens) UTF-8 => Zonk. Über diese Dinge sollte man sich im Klaren sein ... dann klappt es auch mit dem Hashen. Also, was für eine Hashwert-String-Repräsentation soll den rauskommen? |
AW: Mit LockBox10 für XE7 Hashstring erzeugen
Liste der Anhänge anzeigen (Anzahl: 1)
@Daniel & @SirRufo & @Klaus01
Okay, das war's dann wohl :thumb:
Delphi-Quellcode:
Damit hab ich einen Hash-String, den ich verwenden kann: Bei gleichem Ausgangsstring wird jetzt immer derselbe Hashwert erzeugt. Prima und danke :thumb:
Function GetHashedString(Const Awort : String) : String;
Var LBH : TLbSHA1; LBD : TSHA1Digest; i : Integer; Begin Result := ''; LBH := TLbSHA1.Create(Nil); Try LBH.HashString(Awort); LBH.GetDigest(LBD); For i := 0 To 19 Do Result := Result + IntToHex(LBD[i],2); Finally LBH.Free; End; End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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