Einzelnen Beitrag anzeigen

gammatester

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

Re: MD5-Hash wirft Integer-Überlauf Exception (EIntOverflow)

  Alt 23. Jan 2008, 12:33
Bei MD5 (und den meisten anderen Hashalgorithmen) MUSS {$Q-} gesetzt sein, weil dort Integerarithmetik mod 2^32 benutzt wird, und mit 32Bit-Arithmetik Überlaufe praktisch immer vorkommen. Die Alternative wäre 64-Bit-Arithmetik und nach jeder Operatiion ein and $FFFFFFFF dazu programmieren.

Damit ist aber die Performance ziemlich runter und übersichtlicher ist es auch nicht. Man muss halt wissen was man macht, und hier ist {$Q-} definitiv angebracht. Man kann allerdings die entsprechenden Proceduren mit {$Q-}...{$Q+] klammern und immer den Standardwert wieder herstellen.

Gruß Gammatester
  Mit Zitat antworten Zitat