M. Kutyłowski, W.-B. Strothmann
i := i + 1 mod 256 j := j + 7r(z) mod 256
zamień wartości 7T dla argumentów z oraz j k := 7r(7r(ż) + 7r(;'))
Liczba k jest kolejnym bajtem ciągu pseudolosowego generowanym w tej fazie.
>■ Wewnętrzne klucze i,j, m są inicjalizowane za pomocą ciągu bajtów SoSi... sm_i. Najpierw wewnętrzne klucze inicjalizowane są w następujący sposób:
i := OJ := 0 oraz n(h) := h dla h < 256.
Następnie 256 razy wykonywane są następujące operacje:
j ~ j + 7r(z) 4- s, mod 256
zamień wartości 7r dla argumentów z oraz j
i := i + 1 mod m
Operaqe wykonywane na 7r w pojedynczej fazie zmierzają do zmiany tt w pseudolosowy sposób. Zauważmy, iż w ciągu kolejnych 256 faz każda wartość 7r(z) ulega zamianie. Sposób dokonywania modyfikacji (zamiana wartości) znany jest jako skuteczna metoda szybkiej zmiany postaci tt. Ponadto, bajty k wybierane są jako wartości permutacji 7r w miejscu dynamicznie wskazywanym poprzez wartości 7r(z) oraz 7r(;).
Pożyteczną własnością algorytmu szyfrującego może być jego niedeter-minizm: ten sam tekst jawny może odpowiadać wielu różnym krypto-gramom przy zastosowaniu tego samego hasła. Jedną tego typu metodę poznaliśmy, mianowicie algorytm EIGamala. Teraz opiszemy algorytm oparty o własności generatora BBS.
Algorytm szyfrujący Blum-Goldwasser: niech p i c\ będą dostatecznie dużymi liczbami pierwszymi, p = c\ = 3 mod 4. Niech n — p ■ c\. Liczby p i q stanowią tajny klucz służący do deszyfrowania, szyfrowanie dokonywane jest za pomocą publicznego klucza n.
110