Bennu Game Development

Foros en EspaƱol => Mesa de Ayuda => Topic started by: DCelso on October 09, 2016, 10:01:53 PM

Title: Encriptar un entero con mod_crypt
Post by: DCelso on October 09, 2016, 10:01:53 PM
Nada no doy con la tecla. llevo horas intentando encriptar y desencriptar un pordiosero entero y no hay tu tia

he probado con block igual a 1  (teoricamente 8 bytes) y con block igual a 0.5, que presupongo 4 bytes.

SplinterGU, una ayudita plis.


import "mod_say"
import "mod_crypt"

global
  int valor_x;
  string key;
  int crypted_x;
begin
    key = "miclave";
    valor_x = 34243;
    crypted_x = -1;
    say ("valor_x: " + valor_x);
    crypt_encrypt (CRYPT_DES, &key, &valor_x,&crypted_x,  1);
    say ("crypted_x: " + crypted_x);
    valor_x = -1;
    crypt_decrypt (CRYPT_DES, &key, &crypted_x, &valor_x,  1);
    say ("valor_x: " +valor_x);

    valor_x = 34243;
    crypted_x = -1;
    say ("valor_x: " +valor_x);
    crypt_encrypt (CRYPT_DES, &key, &valor_x,&crypted_x,  0.5);
    say ("crypted_x: " +crypted_x);
    valor_x = -1;
    crypt_decrypt (CRYPT_DES, &key, &crypted_x, &valor_x,  0.5);
    say ("valor_x: " +valor_x);         
end         

Title: Re:Encriptar un entero con mod_crypt
Post by: SplinterGU on October 11, 2016, 06:45:39 PM
3 errores

1) key no puede ser string, tiene que ser char []. (String es un id int, esto se supone que trabaja con arrays de memoria binarios)
2) int es de 4 bytes, cada bloque debe ser de 8 bytes
3) no podes poner 0.5, se espera un entero

codigo corregido


import "mod_say"
import "mod_crypt"

global
  int valor_x[1];
  int crypted_x[1];
  char key[8];
begin
    key = "miclave";
    valor_x[0] = 34243;
    crypted_x[0] = -1;
    say ("valor_x: " + valor_x[0]);
    crypt_encrypt (CRYPT_DES, &key, &valor_x[0],&crypted_x[0],  1);
    say ("crypted_x: " + crypted_x[0]);
    valor_x[0] = -1;
    crypt_decrypt (CRYPT_DES, &key, &crypted_x[0], &valor_x[0],  1);
    say ("valor_x: " +valor_x[0]);

    valor_x[0] = 34243;
    crypted_x[0] = -1;
    say ("valor_x: " +valor_x[0]);
    crypt_encrypt (CRYPT_DES, &key, &valor_x[0],&crypted_x[0],  1);
    say ("crypted_x: " +crypted_x[0]);
    valor_x[0] = -1;
    crypt_decrypt (CRYPT_DES, &key, &crypted_x[0], &valor_x[0],  1);
    say ("valor_x: " +valor_x[0]);
end


tene en cuenta que el valor encriptado son los 2 enteros, son de a 8 bytes, o sea, que si solo guardas el encripted_x[0] no va a funcionar la desencripcion.
Title: Re:Encriptar un entero con mod_crypt
Post by: DCelso on October 11, 2016, 07:22:51 PM
Mil gracias, ahora entiendo un poco mejor la lib.  ;)
Title: Re:Encriptar un entero con mod_crypt
Post by: SplinterGU on October 12, 2016, 12:18:10 AM
de nada,

esta pensada para encriptar binario o texto, pero siempre en bloques de a 8 bytes... quizas te conviene meterlo en una structura, junto a otras variables, siempre tenes que procurar que sean multiplos de 8 bytes