encode()

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.

Programa ejemplo:
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.


Ver: encode_file() - decode_file()