Problem
An RC4 state is a 256 bytes states with two 8-bit index pointers i and j denoted by (S, i, j).The initial RC4 state is generated by KSA denoted by (S0, i = 0, j = 0). An important feature of RC4 is that the RC4 state is reversible. That is, if (S*, i*, j*) =PRGAn (S, i, j), it has (S, i, j) = IPRGAn (S*, i*, j*) where PRGAn denotes applying n rounds PRGA (same for IPRGAn) and IPRGA is the reverse algorithm of PRGA. This feature means that any former RC4 state can be recovered from a later RC4 state by applying certain rounds IPRGA. Write a program to implement both the PRGA algorithm and the following IPRGA algorithm and verify that any RC4 state can go forward by PRGA and backward by IPRGA.