2013-03-20 8 views
7

ja szukam int32-> funkcji int32 która jestpseudolosowych wyglądające jeden-do-jednego int32-> Int32 funkcji

  • bijection (jeden do jednego korespondencji)
  • tanio obliczyć przynajmniej w jednym kierunku
  • przekształca rosnącą sekwencję 0, 1, 2, 3, ... w sekwencję wyglądającą jak dobra sekwencja pseudolosowa (~ połowa bitów odwraca się, gdy argument zmienia się o małą liczbę, bez oczywistych wzory)
+0

Czy próbowałeś czegoś? –

+2

Podobne pytanie: [Obfuscating ID] (http://stackoverflow.com/q/8554286/1009831). –

+0

Jak tanie jest "tanie"? Każdy rozsądny szyfr blokowy powinien oferować twoje pseudolosowe/bitowe odwrócenie pożądania. –

Odpowiedz

10

Pomnożyć przez lar nieparzysta liczba i xor z inną.

Bijection: liczby nieparzyste mają mnożną siłę odwrotną modulo dwóch, więc mnożenie jest cofane przez mnożenie przez odwrotność. I xor jest oczywiście rozwiązany przez inny xor.

Zasadniczo działa generator liczb losowych pseudolosowych kongruencji liniowej.

3

Prawdopodobnie przesada dla tego zadania, ale czy rozważyłeś zastosowanie jakiejkolwiek krypto pseudo random permutation lub innych prymitywów pochodzi z block ciphers. Na przykład można to zrobić za pomocą des ze znanym kluczem w trybie licznika:

younumber xor (des (key, number counter)) 
Powiązane problemy