Pues tu modo de encriptacion es lo que se le llama hacer un "swap".
 
Solo te voy a recomendar algo: 
Crea una funcion que haga algo asi.  
 Cita:  funcion encriptar_desencriptar(byte arg)
{
return ((arg&0xF)<<4)|((arg&0xF0)>>4);
}
    Y usala para encriptar y para desencriptar, ya que en realidad el proceso 2 veces regresa al resultado original. 
Saludos