Encriptar un entero con mod_crypt

Started by DCelso, October 09, 2016, 10:01:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

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         

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Mil gracias, ahora entiendo un poco mejor la lib.  ;)
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2