naja, Hallo erstmal...
Zu deinem Algo.:
Vor relativ kurzer Zeit habe ich auch eine Verschlüsselungsfunktion programmiert...
Als kleinen Tipp an dich: du solltest solche Linearität im Algorithmus vermeiden, da es jemanden leicht ermöglicht aus Teilen des Orginal und des Ciffres, den Key zu errechen. Um soetwas sicher zu umgehen, besitzen öffentliche Algo. eine sogenannte "Eingangspermutation".
Solche Methoden sind relativ gut aus MTF (Move-To-Front) bekannt.
Eine Tabelle (lineares Array) von 256 Einträgen beschreibt einen neuen Output, somit werden Asciiwerte wirksam verändert. Man kann dabei auch die Tabelle Byteabhängig nach jeder Benutzung updaten...
RC4 benutzt eine einfach zu implementierende Initialisierungsvorschrift solcher Matrizen...
ps: Ob die Verwendung von Multiplikation und Division eine CPU-technisch kluge Umsetzung ist, bleibt eine andere Frage...
http://mitglied.lycos.de/cthoeing/crypto/rc4.htm