AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu DEC Hash "Tiger"

Ein Thema von itsme · begonnen am 21. Jun 2018 · letzter Beitrag vom 17. Sep 2020
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 17:46
Den Hash kann man nur über die Größe definieren (128, 160 oder 192)
Ich habe mal mit 3 und 4 durchgängen getestet. (String-Hash)
String = "Das ist ein DP Test." <- ohne die ""
* 3 = cfded0718598bca5dd9ebde4152bca4c28d24f67762a8816
* 4 = 4b245decc02ff5b447d4197642a8232ad2a92646c6e160a4

Also Unterschiede gibt es.
Ps: Das ist ein 192 Ergebnis
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
itsme

Registriert seit: 3. Aug 2006
32 Beiträge
 
Delphi XE Architect
 
#2

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 18:01
Gut ich kann das in diesem speziellen Fall nicht mit einem String versuchen
Bin leider an ein Array gebunden, um auf der Linie des Kumpels zu bleiben, der in irgendeiner der möglichen Sprachen mit .NET herumhantiert

Soll angeblich für ältere Hobbyprogrammierer einfacher sein
Ich mag es nicht, ich bin seit der Schule meiner Kinder, bei Delphi geblieben
Den Informatik Unterricht hat wohl ein Quereinsteiger gegeben, der halt Fan von Delphi war

Nichtdestotrotz kann ich es einmal mit deinem String versuchen...
Ich bin mir z. B. nicht sicher, ob Tiger.Rounds := 5; vor Tiger.Init; gehört oder dahinter?

Vlt. liegts ja auch an dem alten Delphi 7, welches ich damals von ihnen bekommen hatte, um bei den Schulaufgaben zu helfen?
  Mit Zitat antworten Zitat
itsme

Registriert seit: 3. Aug 2006
32 Beiträge
 
Delphi XE Architect
 
#3

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 18:18
Habe es jetzt getestet...

Delphi-Quellcode:
var
  Tiger: THash_Tiger;
  sTiger: string;
  sDummy: string;
  
  
begin
  sDummy := 'Das ist ein DP Test.';
  
  Tiger := THash_Tiger.Create;
  Tiger.Rounds := 4;
  Tiger.Init;
  sTiger := Tiger.CalcBinary(sDummy, TFormat_HEXL);
Egal ob ich Tiger.Rounds := 3; oder Tiger.Rounds := 4; setze, das Ergebnis ist bei mir immer

cfded0718598bca5dd9ebde4152bca4c28d24f67762a8816

Bringt mich jetzt also zu der Gretchenfrage: Was mache ich falsch?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 18:30
Egal ob ich Tiger.Rounds := 3; oder Tiger.Rounds := 4; setze, das Ergebnis ist bei mir immer

cfded0718598bca5dd9ebde4152bca4c28d24f67762a8816

Bringt mich jetzt also zu der Gretchenfrage: Was mache ich falsch?
Vielleicht solltet Ihr mal Eure Version abgleichen. Mit DEC 5.2 dann ich Deine Beobachtung reproduzieren. Wenn man erst einmal den Assemblercode für Tiger auschaltet, sehe ich im Debugger
Delphi-Quellcode:
class function TDECHash.CalcBuffer(const Buffer; BufferSize: Integer; Format: TDECFormatClass): Binary;
begin
  with Create do
  try
    Init;
    Calc(Buffer, BufferSize);
    Done;
    Result := DigestStr(Format);
  finally
    Free;
  end;
end;

procedure THash_Tiger.DoInit;
begin
  SetRounds(FRounds);
  if FPaddingByte = 0 then FPaddingByte := $01;
  FDigest[0] := $89ABCDEF;
  FDigest[1] := $01234567;
  FDigest[2] := $76543210;
  FDigest[3] := $FEDCBA98;
  FDigest[4] := $C3B2E187;
  FDigest[5] := $F096A5B4;
end;


procedure THash_Tiger.SetRounds(Value: Integer);
begin
  //Hier is Value=0 und deshalb wird FRounds := 3 gesetzt
  if (Value < 3) or (Value > 32) then Value := 3;
  FRounds := Value;
end;
Keine Ahnung, warum Value=0 ist, ist halt OO Writeln(Tiger.Rounds) gibt immer den richtigen gesetzten Wert. Aber vielleicht kann jemand mit OO-Erfahrung sofort erkennen, wo daß Problem liegt.
  Mit Zitat antworten Zitat
itsme

Registriert seit: 3. Aug 2006
32 Beiträge
 
Delphi XE Architect
 
#5

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 18:40
@gammatester
Ja vielen Dank für deine Ausführungen
Bin zwar nicht so ganz bewandert mit den Sachen, die man im Debugger sehen kann, werde aber trotzdem versuchen das nachzuvollziehen.

Klar wenn da kein Wert steht, wird der Default Wert genommen, also mache ich scheinbar nichts falsch?
Schade das der Autor Hagen nicht so oft hier ist, der wüsste sicherlich was da schief läuft.

Wenn ich mich recht erinnere, gibt es hier jemand der die Pflege des DEC übernommen hat, sein Nick ist mir gerade nicht geläufig, vlt. kann der ja etwas dazu sagen
Jedenfalls toll, dass so einem Hobbymenschen, der nur liest und selten etwas sagt, hier so gut geholfen wird!

PS: Ich denke irgendwo sollte ich auch eine 5.1 haben
Da muss ich mal suchen und für alle Fälle auch mit dieser Version testen
Mag sein, dass da der Unterschied zu finden ist

Werde mich dann morgen dazu melden, jetzt bin ich nicht genervt, sondern entnervt, daher will ich nicht mehr die externe Festplatte durchforsten
Misserfolge machen irgendwie müde LOL

Geändert von itsme (21. Jun 2018 um 18:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 18:43
Moderator Luckie bietet DEC 5.2 an, ich hoffe das ist eine aktuelle (2014) Version.
Wenn ich da was gebastelt habe melde ich mich wieder. Ich pers. bin mehr Fan von DCPcrypt, bietet auch den Tiger an.


Ohh gerade erst GTs Beitrag gelesen das da Value genullt wird, mit der Änderung sollte es ja nun klappen, oder?
Gruß vom KodeZwerg

Geändert von KodeZwerg (21. Jun 2018 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#7

AW: Frage zu DEC Hash "Tiger"

  Alt 21. Jun 2018, 19:16
Ob das wohl daran liegt, dass CalcBuffer eine class function ist?

In der wird eine neue Instanz erzeugt und die hat als Wert für Rounds logischerweise 0 (Default-Wert für Integer).

Also mich wundert das Verhalten nicht.
  Mit Zitat antworten Zitat
itsme

Registriert seit: 3. Aug 2006
32 Beiträge
 
Delphi XE Architect
 
#8

AW: Frage zu DEC Hash "Tiger"

  Alt 22. Jun 2018, 11:20
So gerade erst wieder hier gelesen

Also zunächst einmal geht es bei mir weder mit der 5.1 noch mit der 5.2, welche zunächst Verwendung gefunden hatte.
Weiterhin geht es ja nicht nur mit CalcBuffer, sondern auch mit CalcBinary nicht.
Klar könnte ich versuchen etwas zu basteln, entsprechend Schokohase und: "Wundert mich nicht"

Mich hingegen wundert jetzt zunächst, das es bei KodeZwerg funktioniert und bei mir nicht.
Wenn es bei einem funktioniert, sollte es doch auch bei allen anderen funktionieren, oder etwas nicht?
Ich nehme mal stark an, dass keiner der hier Schreibenden noch mit Delphi 7 werkelt?
Vlt. liegts ja daran und ich sollte versuchen eine 30 Tage Testversion eines neueren Delphis zu bekommen und damit mal testen.

Zumindest hat bislang niemand moniert, dass mein Code-Schnipsel falsch wäre
  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 13:08 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