A me va in timeout solo se la stringa da cifrare è lunga qualche riga: da quel che ho visto la stringa viene suddivisa in blocchi della lunghezza della password e poi ad ognuno si applica uno xor.
Più aumenta la lunghezza della stringa maggiore è il tempo richiesto