Hi,
Zitat von
Muetze1:
Das ist ja schonmal gut zu wissen, dass man das ganze mit dem nativen Code umschiffen kann. Ich verstehe aber wirklich nicht, wie der vom Delphi Compiler generierte Code - selbst wenn von Delphi Code aufgerufen - andere Ergebnisse bringt, nur weil ein anderer Linker das ganze zusammenpackt.
Ja, das ist mal wieder ein sehr merkwürdiges Verhalten - aber leider kein gänzlich neues Problem. Den Rest des Quotes lass ich mal unkommentiert und gehe gerne im persönlichen Gespräch drauf ein
Zitat von
Muetze1:
Aber egal, darum geht es hier nicht. Vielen Dank schonmal für deine Erkenntnisse. Ich hatte zuvor noch keine Kenntnisse über die neue DEV v5.2, habe sie mir aber gerade mal geladen und were somit auch unseren
DEC Stand mal updaten auf 5.2.
Siehst Du, hat auch was gutes
Zitat von
Muetze1:
Schon getan.
Zitat von
Muetze1:
es wäre besser sie bei den Stellen abzuschalten innerhalb der Lib, wo gewollt mit Überläufen gerechnet wird. Somit ist zum einen sichergestellt: Ja, wissen um den Überlauf und der ist gewollt hier und gleichzeitig würde er an anderen Stellen aussteigen, wo dies definitiv nicht gewollt wäre. Das wäre mal eine wirklich gute Erweiterung der
DEC, falls du da nochmal eine
DEC 5.3 planst ^^.
Das ist wirklich eine gute Anregung, gerade weil viele sich eben nicht so gut mit den Compileroptionen und deren begrenzten Reichweite auskennen. Ich nehm das mal in meine Liste auf. Wenn irgendwann sowieso eine Änderung ansteht, pack ich es mit rein.
Ich habe eben nochmal alle Hashes in C++ getestet: Diese funktionieren zu 100%, wenn der
asm-Code deaktiviert wird. Die Overflow-Checks müssen dazu dann natürlich aus sein. Es liegt also wirklich am
asm Code aus der DECHash.pas bzw. DECHash.inc - wo genau in den 3520 bzw. 28614 Zeilen ist mir im Moment auch nicht erklärbar.
Für alle anderen Leser: Als Bugfix also bei
DEC 5.1 bzw. 5.2 & C++ Builder in der Datei DECHash.pas folgendes ändern:
Delphi-Quellcode:
type
{all Hash Classes}
THash_MD2 = class; {.$DEFINE THash_MD2_asm} // q&d fix c++
THash_MD4 = class; {$DEFINE THash_MD4_asm}
THash_MD5 = class; {$DEFINE THash_MD5_asm}
THash_RipeMD128 = class; {$DEFINE THash_RipeMD128_asm}
THash_RipeMD160 = class; {$DEFINE THash_RipeMD160_asm}
THash_RipeMD256 = class; {$DEFINE THash_RipeMD256_asm}
THash_RipeMD320 = class; {$DEFINE THash_RipeMD320_asm}
THash_SHA = class; {$DEFINE THash_SHA_asm}
THash_SHA1 = class;
THash_SHA256 = class; {$DEFINE THash_SHA256_asm}
THash_SHA384 = class; {.$DEFINE THash_SHA384_asm} // q&d fix c++
THash_SHA512 = class;
THash_Haval128 = class; {$DEFINE THashBaseHaval_asm}
THash_Haval160 = class; // Haval 160, 3 Rounds
THash_Haval192 = class; // Haval 192, 4 Rounds
THash_Haval224 = class; // Haval 224, 4 Rounds
THash_Haval256 = class; // Haval 256, 5 Rounds
THash_Tiger = class; {.$DEFINE THash_Tiger_asm} // q&d fix c++
THash_Panama = class; {$DEFINE THash_Panama_asm}
THash_Whirlpool = class; {$DEFINE THashBaseWhirlpool_asm}
THash_Whirlpool1 = class;
THash_Square = class; {.$DEFINE THash_Square_asm} // q&d fix c++
THash_Snefru128 = class; {.$DEFINE THash_Snefru128_asm} // q&d fix c++
THash_Snefru256 = class; {.$DEFINE THash_Snefru256_asm} // q&d fix c++
THash_Sapphire = class; {$DEFINE THash_Sapphire_asm}
Gruß Assertor