ich eine einfache Funktion, die überläuft mit Modulo-OperatorWie umkehren ich den Mod-Operator
Private Function RandomizeBlock(seed As Integer, ByVal block() As Byte) As Byte()
Dim Generator As System.Random = New System.Random(seed)
Dim newblock(255) As Byte
Dim i As Integer = 0
For i = 0 To block.Length - 1
newblock(i) = (block(i) + Generator.Next(0, 256)) Mod 256
Next
Return newblock
End Function
Wie rückgängig ich die Randomisierung zu einem Block getan behandelt?
Ich weiß mod funktioniert wie folgt:
253,254,255,0,1,2,3,4
Umhüllungen auf 0
.
Kann ich hier die Umkehrung von reverse
finden?
rndValue = Generator.Next(0, 256)
reverse_1 = ((256 - rndValue) + block(i)) Mod 256
reverse_2 = ((256 + rndValue) - block(i)) Mod 256
Es ist unklar, was Sie erreichen wollen: Sie scheinen zu wissen, dass 'Mod' eine irreversible Funktion im Allgemeinen. Sie haben 'x + b Mod 256 = a', und Sie scheinen' x' (mod 256) abrufen zu wollen. Aber das funktioniert nur, wenn du 'a' * und *' b' kennst. Im Moment kennen Sie nur "a", denn "b" ist in keiner Weise ermittelbar. Dies kann nicht funktionieren. –
nichts ist verloren mit dem Mod-Operator es ist nur gehalten in, was ich Muskelspeicher nennen, auch wenn es zu einer niedrigeren Zahl übergelaufen ist, könnte es immer noch als eine große Zahl imaginäre und subtrahiert von ihm betrachtet werden .. nein? Ich kenne den RNG-Wert, der hinzugefügt wurde, und ich kenne den neuen Wert, der geändert wurde. – SSpoke
Mod gibt nur den Rest nach der Division zurück. Wenn Sie also Rest = x Mod 256 setzen, erhalten Sie eine Zahl, die den Betrag darstellt, der übrig bleibt, nachdem x durch viele 256er Fits geteilt wurde. Um die Mod-Funktion rückgängig zu machen, müssen Sie wissen, wie viele 256 zusätzlich zum Rest passen. – Beth