encode(<OFFSET de los datos>, <longitud>, <clave>)
Descripción:
Encripta o desencripta un bloque de datos en memoria con una clave determinada. Los parámetros necesarios son los siguientes:
<OFFSET de los datos> - Dirección de memoria en la que comienza el bloque que debe comprimirse, para obtener la esta dirección se debe utilizar el operador OFFSET.
<longitud> - Longitud de los datos a comprimir, es decir, el número de posiciones de memoria ocupadas por los mismos, la longitud de cualquier dato se puede obtener con SIZEOF().
<clave> - Un literal (texto entre comillas) con la clave de encriptación o desencriptación de los datos.
El algoritmo es reversible por lo que, para desencriptar los datos, simplemente se tienen que volver a encriptar con la misma clave.
El algoritmo de encriptación es muy complejo, por lo que cualquier dato encriptado con una clave únicamente se podrá recuperar aplicándole la misma clave de nuevo.
PROGRAM ejemplo_encode; CONST clave="miclave"; GLOBAL tabla_original[14] =0,1,2,3,4,5,6,7,8,9,10,11,12,13,14; tabla_encriptada[14]=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14; contador; BEGIN write(0,0, 0,0,"Valores originales"); write(0,160,0,0,"Valores encriptados"); write(0,0,190,0,"[ESPACIO] para encriptar/desencriptar los valores"); // Encripta los valores de la segunda tabla encode(OFFSET tabla_encriptada,sizeof(tabla_encriptada),clave); FOR (contador=0;contador<15;contador++) write_int(0,0, 20+contador*8,0,OFFSET tabla_original[contador]); write_int(0,160,20+contador*8,0,OFFSET tabla_encriptada[contador]); END LOOP IF (scan_code==_space) // Encripta y desencripta los valores de la segunda tabla encode(OFFSET tabla_encriptada,sizeof(tabla_encriptada),clave); END FRAME; END END
Este programa tiene definidas dos tablas de datos globales, ambas con los mismos valores y permite, pulsando la barra espaciadora, encriptar y desencriptar una de las dos tablas (la denominada tabla_encriptada[]).
Se puede observar como, al encriptar por segunda vez los datos, se recuperan en su estado original. Si se utiliza una clave distinta, el resultado será totalmente diferente.
Nota: Existen otras dos funciones que permiten encriptar y desencriptar archivos de cualquier tipo, en este caso se debe utilizar una función para cada operación: encode_file() para encriptar y decode_file() para desencriptar.