package com.openvehicles.OVMS;
public class RC4 {
private byte[] state = new byte[256];
private int x;
private int y;
public RC4(String paramString) throws NullPointerException {
this(paramString.getBytes());
}
public RC4(byte[] paramArrayOfByte) throws NullPointerException {
int j;
int k;
for (int i = 0;; i++) {
if (i >= 256) {
this.x = 0;
this.y = 0;
j = 0;
k = 0;
if ((paramArrayOfByte != null)
&& (paramArrayOfByte.length != 0))
break;
throw new NullPointerException();
}
this.state[i] = (byte) i;
}
for (int m = 0;; m++) {
if (m >= 256)
return;
k = 0xFF & k
+ ((0xFF & paramArrayOfByte[j]) + (0xFF & this.state[m]));
int n = this.state[m];
this.state[m] = this.state[k];
this.state[k] = (byte)n;
j = (j + 1) % paramArrayOfByte.length;
}
}
public byte[] rc4(String paramString) {
byte[] arrayOfByte;
if (paramString == null)
arrayOfByte = null;
else {
arrayOfByte = paramString.getBytes();
rc4(arrayOfByte);
}
return arrayOfByte;
}
public byte[] rc4(byte[] paramArrayOfByte) {
byte[] arrayOfByte;
if (paramArrayOfByte == null)
arrayOfByte = null;
else {
arrayOfByte = new byte[paramArrayOfByte.length];
for (int i = 0; i < paramArrayOfByte.length; i++) {
this.x = (0xFF & 1 + this.x);
this.y = (0xFF & (0xFF & this.state[this.x]) + this.y);
int j = this.state[this.x];
this.state[this.x] = this.state[this.y];
this.state[this.y] = (byte)j;
int k = 0xFF & (0xFF & this.state[this.x])
+ (0xFF & this.state[this.y]);
arrayOfByte[i] = (byte) (paramArrayOfByte[i] ^ this.state[k]);
}
}
return arrayOfByte;
}
}