AGB  ·  Datenschutz  ·  Impressum  







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

Mit LockBox10 für XE7 Hashstring erzeugen

Ein Thema von Perlsau · begonnen am 23. Feb 2015 · letzter Beitrag vom 23. Feb 2015
Antwort Antwort
Seite 1 von 2  1 2      
Perlsau
(Gast)

n/a Beiträge
 
#1

Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 10:19
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 diese Version installiert, finde aber nirgendwo ein Manual oder sonstige Hinweise, wie die einzelnen Komponenten zu verwenden sind. Beispiele sind offenbar auch keine dabei. Leider kenne ich mich nur mit der DCPcrypt Cryptographic Component Library aus, die will mein Kunde jedoch nicht einsetzen.

Hat jemand für mich eine einfache Anleitung, wie man mit LockBox aus einem String einen Hashwert erzeugt?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 10:42
Dazu müsste erst einmal die Entscheidung getroffen werden, welcher Algorithmus verwendet werden soll. Dann sollte das mit TLbMD5.HashString oder TLbSHA1.HashString gehhen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 10:47
Danke für deine Antwort. Bislang hab ich mal folgenden Funktionsrumpf erstellt:
Delphi-Quellcode:
// ----- 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;
Wie geht's nun weiter?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 10:51
.. der Hash liegt in LBH.HashOutputValue
Siehe auch: http://codeverge.com/embarcadero.del...-fails/1070398

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 10:57
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
Miniaturansicht angehängter Grafiken
hashoutputvalue.jpg  

Geändert von Perlsau (23. Feb 2015 um 11:00 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 11:07
.. dann vielleicht getDigest?

Delphi-Quellcode:
 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;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 11:21
... 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 LockBox10 gearbeitet?
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 11:30
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 11:36
Wenn man weiß, was ein Hashwert ist und woraus ein Hashwert ausschließlich gebildet werden kann, dann ist alles viel klarer:
Zitat:
Ein Hashwert wird ausschließlich aus Bytefolgen erzeugt und der Hashwert selber ist auch eine Bytefolge.
Was man dann aus dieser Bytefolge macht (Malen nach Zahlen, in einen HexString umwandeln, ...) ist dann reine Präsentation der Bytefolge. Nicht mehr, nicht weniger.

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?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#10

AW: Mit LockBox10 für XE7 Hashstring erzeugen

  Alt 23. Feb 2015, 11:55
@Daniel & @SirRufo & @Klaus01
Okay, das war's dann wohl
Delphi-Quellcode:
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;
Damit hab ich einen Hash-String, den ich verwenden kann: Bei gleichem Ausgangsstring wird jetzt immer derselbe Hashwert erzeugt. Prima und danke
Miniaturansicht angehängter Grafiken
hashstringtest.jpg  

Geändert von Perlsau (23. Feb 2015 um 12:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz