En los años 80 y 90 con una potencia de proceso más que limitada, los algoritmos de tratamiento de datos que se usaban eran sencillos en concepto, y eficientes en implementación.
Así se comprimía y descomprimía información usando variantes de Run-length encoding (RLE) o Lempel–Ziv–Welch (LZW), se encriptaba usando el algoritmo de César el de Vigenèreo, o el de Xor, y la comprobaciones de integridad de hacían con checksum o Adler como mucho.
Codificar cualquiera de estos algoritmos tiene el encanto de que son ideas sencillas, y brillantes al mismo tiempo. Pero es que además, son candidatas idóneas para ser ejecutadas en entornos poco potentes, ya sea por ser lenguajes no nativos sin demasiado desempeño como Javascript o PHP; bien porque deban ejecutarse en plataformas no demasiado potentes como teléfonos móviles o tabletas.
Como muestra de todo ello he implementado en Javsacript el algoritmo de encriptado y desencriptado usando Xor, que desde hace mucho tiempo ha sido de mis preferidos. Y es que por un lado, es relativamente seguro, o al menos lo es más que otros algoritmos de complejidad similar. Por otro lado, al reducirse a operaciones a nivel de bits, resulta muy veloz, incluso en Javascript.