elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error sobre cifrado AES
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error sobre cifrado AES  (Leído 1,367 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Error sobre cifrado AES
« en: 28 Octubre 2015, 18:44 pm »

Buenas, reestructuraré la pregunta:

Utilizo un archivo donde guardo datos, esos datos me interesa que estén cifrados, para ello siempre que escribo algo en el (un grupo de datos) lo cifro antes de escribirlo en él.

Cuando escribo datos paso un tuple<u_char*,int> "bytes", pues AES necesita el tamaño para cifrarlo, lo escribe en el archivo y al final siempre deja un "\0", a veces cuando va a escribir por segunda vez (sobre lo escrito anteriormente) salta un error en ejecución, sobre la línea del ofstream.write : "se produjeron daños en un montón".

Código:

Código
  1. void almacen::escribir_cifrado(bytes _datos)
  2. {
  3. ofstream archivo;
  4. archivo.open(directorio, ofstream::app | ofstream::binary);
  5. _datos = cifrador.encriptar_AES(get<CONTENIDO>(_datos), get<TAMAÑO>(_datos));
  6. -> archivo.write((char*)&(get<CONTENIDO>(_datos)[0]), get<TAMAÑO>(_datos));
  7. archivo.close();
  8. }


Aparte al descifrarlo, leo todo el archivo en binario, y lo mando descifrar, pero solo descifra el primer bloque de datos, he mostrado todos los bytes como ints y me cortaba en el primer '\0', he probado a suprimirlos y persiste el problema, ¿que puede ser? ¿dónde está el fallo?.

Código
  1. string almacen::leer_descifrado()
  2. {
  3. ifstream archivo;
  4. archivo.open(directorio, ifstream::in | ifstream::binary);
  5. archivo.seekg(0, ifstream::end);
  6. streampos tamaño = archivo.tellg();
  7. char *contenido = new char[tamaño]();
  8. archivo.seekg(0, ifstream::beg);
  9. archivo.read(contenido, tamaño);
  10. archivo.close();
  11. string ret = cifrador.desencriptar_AES((u_char*)contenido, tamaño);
  12. delete contenido;
  13. return ret;
  14. }

Una pregunta:

¿Los sucesivos montones de datos que meto cifrados tengo que descifrarlos uno a uno (pues estan separados por \0), o puedo leerlo todo pasarlo a descifrar y ya lo debería de hacer?, ¿ambas funcionan? ¿tengo que descifrar por bloques?. Es AES.

Saludos y gracias.

EDICION DELICATESSE:

Código
  1. string encriptador_AES::desencriptar_AES(u_char *_entrada, int _tamaño)
  2. {
  3. int p_len = _tamaño, f_len = 0;
  4. u_char *salida = (u_char*)malloc(p_len);
  5. EVP_DecryptInit_ex(&de, NULL, NULL, NULL, NULL);
  6. EVP_DecryptUpdate(&de, salida, &p_len, _entrada, _tamaño);
  7. EVP_DecryptFinal_ex(&de, salida + p_len, &f_len);
  8. for (int i = 0; i < _tamaño; i++)
  9. cout << salida[i];
  10. return string((char*)salida);
  11. }

Al pasar salida a (char*) en el primer \0 se corta la cadena y por eso mostraba solo el primer bloque, porque al final de cada bloque se añade un \0, solucionado pues era una chorrada, pero costo un poco encontrarla XD.


« Última modificación: 30 Octubre 2015, 12:25 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
dudas sobre cifrado wpa
Hacking Wireless
v404 1 2,836 Último mensaje 22 Diciembre 2011, 04:00 am
por m0rf
Error cifrado ROOT13
Java
Søra 1 1,798 Último mensaje 28 Agosto 2012, 03:24 am
por xmbeat
Dudas sobre el cifrado del handshake...
Hacking Wireless
Anshii 2 3,114 Último mensaje 16 Octubre 2012, 15:03 pm
por Anshii
Firefox desactivará la cifrado SSL por el error de seguridad 'poodle'
Noticias
wolfbcn 1 2,331 Último mensaje 15 Octubre 2014, 21:46 pm
por kub0x
Rompen por error “el cifrado más seguro del mundo”
Noticias
wolfbcn 3 3,599 Último mensaje 19 Mayo 2015, 03:29 am
por kub0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines