dim s$ : s$ = "abc" RC4EncDecChar(s, "g", 3) PRINT s RC4EncDecChar(s, "g", 3) Print s pause FUNCTION RC4EncDecChar(sData[] AS CHAR, sKey[] AS CHAR, nDataLen%) LOCAL aState%[256] LOCAL nKeyLen% : nKeyLen = Len(sKey) LOCAL nAsc%, iIndex%, x%, y%, nSwap%, nData% FOR INTEGER i = 0 TO 255 aState[i] = i NEXT FOR INTEGER i = 0 TO 255 !nAsc = sKey[(i % nKeyLen)]; !iIndex = (nAsc + aState[i] + iIndex) % 256; nSwap = aState[i] aState[i] = aState[iIndex] aState[iIndex] = nSwap NEXT FOR INTEGER i = 0 TO nDataLen - 1 !x = (x + 1) % 256; !y = (aState[x] + y) % 256; nSwap = aState[x] aState[x] = aState[y] aState[y] = nSwap !iIndex = (aState[x] + aState[y]) % 256; nData = (integer)sData[i] !nAsc = nData ^ aState[iIndex]; sData[i] = (integer)nAsc NEXT FUNCTION = 1 END FUNCTION