Foros del Web » Programación para mayores de 30 ;) » C/C++ »

encriptación con Crypto++

Estas en el tema de encriptación con Crypto++ en el foro de C/C++ en Foros del Web. Hola mis estimados, espero ustedes me puedan auxiliar con esta bronca: Tengo una dll la cual encriptará información obtenida desde un programa en c#, tengo ...
  #1 (permalink)  
Antiguo 26/01/2012, 13:05
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
encriptación con Crypto++

Hola mis estimados, espero ustedes me puedan auxiliar con esta bronca:

Tengo una dll la cual encriptará información obtenida desde un programa en c#, tengo el siguiente método:

Código C++:
Ver original
  1. byte key[ Rijndael::DEFAULT_KEYLENGTH ];
  2. byte iv[ Rijndael::BLOCKSIZE ];
  3. string texto = "Esto es un texto cifrado de ejemplo, haber si ya queda esta madre";
  4. string cifrado("");
  5. CryptoPP::CBC_Mode< Rijndael >::Encryption e( key, sizeof(key), iv );
  6. StringSource(texto, true, new CryptoPP::StreamTransformationFilter(e, new CryptoPP::StringSink(cifrado)));

Hasta ahí todo bien, de hecho si me encripta el texto enviado y toda la onda, pero cuando me devuelve la respuesta a mi programa en C# me envía una aserción:


De lo que he encontrado de información indican que la clase std::string no es compatible para crear dll, espero de antemano puedan ayudarme, yo mientras seguiré buscando alguna solución.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #2 (permalink)  
Antiguo 26/01/2012, 14:19
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Respuesta: encriptación con Crypto++

Me auto contesto:

Esta es la línea que me daba falla

CryptoPP::StringSource(texto, true, new CryptoPP::StreamTransformationFilter(cifrado, new CryptoPP::StringSink(CipherText)));

Y por el que lo tuve que cambiar:

Código:
 CBC_Mode< AES >::Encryption e; 
 e.SetKeyWithIV(key, sizeof(key), iv);
 StreamTransformationFilter filter(e); 
 filter.Put((const byte*)texto.data(), texto.size()); 
 filter.MessageEnd();
 const size_t ret = filter.MaxRetrievable(); 
 cifrado.resize(ret); 
 filter.Get((byte*)cifrado.data(), cifrado.size());
Y listo, espero les pueda ayudar en algún momento de sus vidas
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.

Etiquetas: clase, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.