Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   irreversible Funktion?! (https://www.delphipraxis.net/114102-irreversible-funktion.html)

Avax2k 19. Mai 2008 19:37


irreversible Funktion?!
 
Ist diese Funktion irreversibel oder kann man ein Rekonstrukt anhand des Ergebnisses erstellen?

i << 24 + i2 << 16 + i3 << 8 + i4 = Ergebnis

lassen sich nun i-i4 wiederherstellen aus dem Ergebnis? Ich denke das ist nicht machbar, was meint ihr?

Dax 19. Mai 2008 19:42

Re: irreversible Funktion?!
 
Nur unter der Vorraussetzung, dass i{n} Bytewerte sind, ist es umkehrbar.

Avax2k 19. Mai 2008 19:46

Re: irreversible Funktion?!
 
hast du auch einen Link oder eine ausführlichere Erkläuterung wie dies zu bewerkstelligen wäre?

schließlich werden die Bytewerte nirgends zwischengespeichert. Einmal das Ergebnis berechnet sind somit 4 unbekannte in der Gleichung.

Dax 19. Mai 2008 19:58

Re: irreversible Funktion?!
 
Dein Ergebnis ist ein 32bit-Wert. <<(8n) schiebt einen Wert um n Byte nach links. Was du da tun würdest, wäre einen Integer aus 4 Byte zusammenzusetzen.

i << 24 + i2 << 16 + i3 << 8 + i4 = Ergebnis

i = Ergebnis >> 24
i2 = (Ergebnis >> 16) && 255
i3 = (Ergebnis >> 8) && 255
i4 = Ergebnis && 255

Wenn aber ein i{n} nicht mehr in ein Byte passt, wrapt der Wert dank des + auf das nächste Byte: die Funktion ist nicht mehr umkehrbar.

Beispiel: i = 0, i2 = 0, i3 = 1, i4 = 0 -> Ergebnis = 256
Das selbe nochmal: i = 0, i2 = 0, i3 = 0, i4 = 256 -> Ergebnis 256

Derjenige, der das Ergebnis hat, kann ohne weiteres Wissen nicht zuverlässig sagen, was du gemeint hast - wenn er aber weiss, dass i{n} Bytes sind, kann er das.

idontwantaname 19. Mai 2008 20:00

Re: irreversible Funktion?!
 
Nein. Du fügst lediglich 4 Bytewerte zu einem Integer (4 Byte Ganzzahl Typ) zusammen. Die Extraktion der Bytes folgt erneut durch Schiebung:

i = (ergebnis >> 8/16/24) & 0xff;

Lg oli

Avax2k 19. Mai 2008 20:22

Re: irreversible Funktion?!
 
super vielen Dank, hätte nicht gedacht, dass es so einfach ist. Muss mich auf diese Gebiet noch schlau machen :).


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz