SHA1 Stream generiert falschen hash

Begonnen von Aaron, 28. November 2011, 12:58:52

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Aaron

Hallo,

hat bereits jemand Erfahrungen mit dem SHA1Stream FB aus der Network Lib gesammelt?
Ich habe die Instanz des FBs genau so benutzt, wie es in der Dokumentation steht, bekomme aber nie das Ergebnis, das mit den gleichen Daten von anderen SHA1 Algorithmen (Perl, Java, C++) oder Programmen geliefert wird.
Bei Daten der Länge Null muss der Hash z.B. so aussehen: da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA1 Stream erzeugt allerdings 9844F81E1408F6ECB932137D33BED7CFDCF518A3
Kann es am Zielsystem liegen?

peewit

#1
hallo

du machst nichts falsch, und es hat nichts mit der plattform zutun

das unser sha1-hash baustein prinzipiell falsch arbeitet , das glaube ich nicht
es dürfte nur bei der sonderanwendung mit länge 0 was falsches errechnet werden.
aber das können wir notfalls als ausnahmeregel integrieren

es ist ja gar nicht so einfach von nichts einen sha1-hash zu errechnen  ;D

hast du mit anderen sha1 hash samples auch ein problem ?

meine md5-hash routine hat auch bei länge null ein problem, so ein zufall

ich werde mir das bei gelegenheit ansehen (wird aber ein wenig dauern, habe momentan wenig zeit)
sollte nur der sha1-hash länge 0 falsch sein, kannst du sicherlich damit eine weile leben


Aaron

Hallo peewit,
danke für die schnelle Antwort, ich habe schon langsam gezweifelt weil ich schon seit Tagen den Pseudocode mit der Hash Funktion vergleiche und keinen Fehler finden kann  :D

Die Länge null habe ich nur probiert, weil die einfach in allen anderen Programmen zum Vergleich schnell abgerufen werden kann, wichtig ist die für mich überhaupt nicht.
Leider habe ich auch mit allen anderen Werten ein Problem.
Ich versuche für den Test den Hash von 2 Byte zu errechnen:Beide Bytes haben den Wert 48 (Ascii Zeichen '0')
Da sollte herauskommen: fb96549631c835eb239cd614cc6b5cb7d295121a
Es kommt allerdings etwas heraus beginnend mit feb024ab...

Die beiden Bytes kommen korrekt in der SHA1 buf an, da steht dann "48, 48, 0, 0, 0 ..." Soweit sieht alles gut aus.

Mit welchen Werten funktioniert es bei dir?

peewit

#3
hallo Aaron

ich habe heute kurz auf einer twincat soft-plc (codesys 2.x basis) es mir nochmals angesehen

dabei habe ich sogar ein problem entdeckt, das war aber nur im baustein SH1_TO_STRH
der hat den string nur auf 16 zeichen anstatt auf 20 zeichen ausgegeben
im anhang der korrigerte baustein

jedoch im eigentlichen SHA1_STR bzw. im internen SHA1_STREAM konnte ich keine probleme entdecken
ich habe "" , "00" und vieles andere probiert, ich habe immer das richtige ergebnis bekommen
allerdings habe ich das heute auf einen anderen PC getestet als gestern

das was ich gestern sagte bzw glaubte gesehen zu haben, muss ich mir nochmals ansehen....

nachdem ich momentan nur korrekte sha1 hash werte bekommen, muss ich davon ausgehen, das meine routinen
ansich in ordnung sind.

das es aber bei dir , und anscheinend bei mir gestern auch nicht das richtige machte müssen wir nochmals nachprüfen

ich werde es mir auch nochmals auf meinem anderen pc-system ansehen.......

als beweis habe ich dir ein bildschirmfoto angehängt !




[gelöscht durch Administrator]

Aaron

Hallo peewit,

Keine weiteren Tests notwendig, dass es bei Dir geht lag außer Zweifel :-)
Danke für den Screenshot, denn der hat mich dazu bewogen mal in fup das ganze zu testen und wieder alles zurück auf Anfang zu stellen und auf den richtigen Weg geleitet...und es geht natürlich. Der Fehler lag in unserer Implementierung der ByteToDword Konvertierung, da war ein Variablendreher drin (Darf man ja fast so nicht sagen, aber naja, wo man hobelt ... ;D )

Es geht jedenfalls nun und wir sind überglücklich...Vielen Dank :-)

peewit

hallo

1. es freut mich wenn es doch problemlos funktioniert

2. habe ich ja auch dabei einen fehler im Baustein SHA1_TO_STRH entdeckt
    (den korrigierten baustein kannst du bei dir ja gleich austauschen)