Posiłkując się wiki zaimplementowałem algorytm RC4 w ten sposób:

private void swap(int i, int j) {
		int tmp = s[i];
		s[i] = s[j];
		s[j] = tmp;
	}
	private void init_key() {	//genracja tablicy k
		for(int i = 0; i < SIZE; i++) {
			k[i] = key.codePointAt(i%key.length());
		}
	}
	private void init() {	//generacja tablicy s
		for(int  i=0; i < SIZE; i++) {
			s[i] = i;
		}
 
		int j = 0;
		for(int i = 0; i < SIZE; i++)
		{
			j = (j + s[i] + k[i]) % SIZE;
			swap(i, j);
		}
	}
	/*
	 * metody przeciazone.
	 */
	public String encrypt() {	//przeciążona metoda szyfrująca z interfejsu Encryptable.
		int i = 0, j = 0, r = 0;
		String encryptedText = "";
		
		init_key();
		init();
		for(int k = 0; k < text.length(); k++) {	//szyfrowanie
		   i = (i+1) % SIZE;
		   j = (j + s[i]) % SIZE;
		   swap(i, j);
		   
		   r = s[(s[i] + s[j]) % SIZE];
		   encryptedText += (char)(text.codePointAt(k) ^ r);
		}
		return encryptedText;
	}

No i po zamianie zaszyfrowanego tekstu na postać szesnastkową wychodzi mi coś takiego:

klucz = "Key", tekst = "Plaintext", wynik = BBF316E8D940AFAD3, a powinno BBF316E8D940AF0AD3; (no chyba, że wiki się myli)

Tak przyglądam się temu kodowi i jakoś nie mogę znaleźć błędu, może to coś związanego z językiem Java. Jakby komuś chciało się rzucić na to "świeższym" okiem, to był bym wdzięczny...