Registriert seit: 5. Mai 2011
12 Beiträge
Delphi XE3 Professional
|
BigEndian/LittleEndian (mal wieder)
15. Jan 2014, 21:00
Hallo DelphiPraxis!
Ich habe vorhin die Testversion der XE5 heruntergeladen, spiele mit dem Gedanken sie mir zu kaufen. Das mit den neuen Compilern für Android lohnt sich wirklich und funktioniert auch blendend. Um ein paar Dinge zu testen habe ich da älteren Quelltext aus XE3 durchgejagt. Dabei bin ich neben dem Problem, dass es dort keine AnsiStrings mehr gibt, auch noch auf ein anderes gestoßen:
Bekanntlicherweise sind ARM-CPUs ja Big-Endian, wohingegen IA-64 u. 32 Modelle Little-Endian sind. Ich habe erst kürzlich eine eigene Library für Kryptographie mangels funktionierender (XE3...), weniger überladener Units geschrieben. Dabei habe ich z.B. SHA-1 und SHA-256 implementiert.
Benutzt habe ich dafür die offizielle Spezifikation, festgelegt im FIPS 180-2. Daraus habe ich auch die Konstanten übernommen und alle Testvektoren durchprobiert. Sie funktioniert einwandfrei. Das dürfte doch aber garnicht möglich sein, da mir erst jetzt auffällt, das alle Konstanten im FIPS laut Dokument in BigEndian angegeben wurden, bei mir also die Byte-Order komplett verkehrtherum sein sollte. Aber es klappt trotzdem! Auf dem ARM geht es jedoch nicht. Deshalb bin ich in erster Linie auch drauf gekommen.
Habe ich etwas übersehen? Die ganzen Shift und Rot Befehle müssten doch da kompletten Schwachsinn erzeugen!
|