Ya encontré el código que comentaba antes. Es un pelín "pedestre" pero funciona y la misma función vale en ambos sentidos: para cifrar y descifrar. Este es el código que quedó al final, después de varios repasos de gente del foro.
Código PHP:
AnsiString Encriptar(AnsiString Texto)
{
AnsiString Salida = "";
unsigned char Clave[] = "891475632";
unsigned char *cTexto = Texto.c_str();
for (int i = 0, y = 0; i < strlen(cTexto); i ++, y ++)
{
if (y > strlen(Clave))
y = 0;
Salida += char(cTexto[i] ^ (Clave[y] - 48));
}
return Salida;
}
Con esa clave, que puede ser tan larga como se quiera, que está puesta tendríamos:
- Si pasamos ANGELITO devuelve IGFAKLRL.
- Y si pasamos IGFAKLRL devuelve ANGELITO.
Por supuesto que está abierto a mejoras en cualquier sentido.