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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ofstream escribe bytes corruptos o Ifstream los lee
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ofstream escribe bytes corruptos o Ifstream los lee  (Leído 1,352 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Ofstream escribe bytes corruptos o Ifstream los lee
« en: 31 Octubre 2015, 11:39 am »

Hola a todos, ya me aproximo al problema con el cifrado/descifrado AES.

El cifrado y descifrado está bien, el problema es lo que escribe en el archivo, pues aparecen bytes que no deberían estar.

Aquí muestro el contenido 2 cadenas que voy a escribir en el archivo una detrás de la otra, las 2 contienen lo mismo por ello son iguales. Son dos bloques de 48 bytes.
En total el archivo tiene 96 bytes perfecto.

Bytes primer bloque a escribir en el archivo en modo binario / append:
Citar
94 249 51 202 90 217 244 156 231 225 66 150 255 32 117 186 176 251 152 112 108 145 21 73 191 125 236 214 142 28 241 168 189 174 119 131 212 52 158 203 78 199 245 64 206 37 113 36

Bytes segundo bloque a escribir en el archivo en modo binario / append:
Citar
94 249 51 202 90 217 244 156 231 225 66 150 255 32 117 186 176 251 152 112 108 145 21 73 191 125 236 214 142 28 241 168 189 174 119 131 212 52 158 203 78 199 245 64 206 37 113 36

Ahora bien, tras escribir una, y escribir la otra encima de la una, aparecen unos bytes de por medio que no deberían de salir:

Bytes de los dos bloques que aparecen al leer el archivo de nuevo en modo in / binary:
Citar
94 249 51 202 90 217 244 156 231 225 66 150 255 32 117 186 176 251 152 112 108 145 21 73 191 125 236 214 142 28 241 168 189 174 119 131 212 52 158 203 78 199 245 64 206 37 113 36 205 253 253 253 253 173 0 0 54 208 248 159 44 173 0 0 128 183 93 0 144 92 93 0 8 236 93 0 192 0 93 0 32 208 249 136 35 173 0 8 184 182 93 0 64 98 93 0

Luego al descifrar, salen cosas corruptas normal, además descifra todo correctamente menos los bytes corruptos, pero ¿porque salen?, os dejo el código donde hago la prueba:

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. for (int i = 0; i < get<TAMAÑO>(_datos); i++)
  7. {
  8. cout << (int)get<CONTENIDO>(_datos)[i] << " ";
  9. }
  10. cout << endl << endl;
  11. archivo.write((char*)get<CONTENIDO>(_datos), get<TAMAÑO>(_datos));
  12. archivo.close();
  13.  
  14. ifstream archivo2;
  15. archivo2.open(directorio, ifstream::in | ifstream::binary);
  16. archivo2.seekg(0, ifstream::end);
  17. int man = archivo2.tellg();
  18. archivo2.seekg(0, ifstream::beg);
  19. cout << man;
  20. char *contenido = new char[man]();
  21. archivo2.read(contenido, man);
  22.  
  23. archivo2.close();
  24. for (int i = 0; i < man; i++)
  25. {
  26. cout << (int)get<CONTENIDO>(_datos)[i] << " ";
  27. }
  28. system("pause");
  29. }

Las cadenas encriptadas están bien, pero al obtenerlas ya bien sea causa de porque fueron escritas en el fichero de forma errónea, o porque al leer se corrompieron lo que recibo no concuerda con lo que dije que escribiera.

¿Qué podrá pasar?, un saludo.

Edito: Descartamos que escribe mal en el archivo porque esto es o que tine al abrir con el bloc de notas:

Citar
^ù3ÊZÙôœçáB–ÿ uº°û˜pl‘I¿}ìÖŽñ¨½®wƒÔ4žËNÇõ@Î%q$^ù3ÊZÙôœçáB–ÿ uº°û˜pl‘I¿}ìÖŽñ¨½®wƒÔ4žËNÇõ@Î%q$

Como se puede observar, los 2 bloques son iguales, y empiezan por "^ù3ÊZ", luego parece que escribe bien, el problema está en la lectura y la carga en un buffer.


« Última modificación: 31 Octubre 2015, 12:02 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.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ofstream escribe bytes corruptos o Ifstream los lee
« Respuesta #1 en: 31 Octubre 2015, 13:25 pm »

Sé concreto en la pregunta, si tu problema es la lectura del archivo, entonces el problema es ese, no menciones cifrados ni descifrados, si no son parte de la pregunta.
Aisla el código erróneo. Depura, y encuentra las líneas en las que se encuentra al irregularidad.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA] Variable en open() de ofstream; « 1 2 »
Programación C/C++
Ch1n0Cr 11 4,930 Último mensaje 23 Noviembre 2010, 04:57 am
por Beakman
[C++]Contenido de ofstream con variable
Programación C/C++
Puntoinfinito 2 2,313 Último mensaje 11 Febrero 2013, 15:24 pm
por Puntoinfinito
Ayuda: pasando un objeto ofstream como parametro
Programación C/C++
erest0r 4 2,770 Último mensaje 23 Septiembre 2014, 13:03 pm
por BlackM4ster
std::ofstream::close crashea sin explicación aparente
Programación C/C++
class_OpenGL 4 1,883 Último mensaje 19 Diciembre 2015, 22:54 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines