Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: PimpL en 2 Septiembre 2016, 15:22 PM

Título: AES
Publicado por: PimpL en 2 Septiembre 2016, 15:22 PM
Hola a todos, soy desarrollador de aplicaciones web en ruby,
pero hace poco desarrolle una aplicacion en C++ (Tengo un poco de soltura) destinada a cifrar varias bases de datos del servidor al vuelo, es decir automatizar la entrada de ciertos datos en el servidor y cifrarlos

En ruby las librerias de criptografia son bastante senzillas de utlizar pero en C++ en un verdadero fastidio.

Alguien sabe como cifrar/desenciptar con AES en C++ con alguna libreria?
Por ejemplo: encript(plaintext,key)  decrypt (ciphertext, key)

Es decir, si alguien me puede poner un ejemplo cifrando descifrando con AES, he probado varias librerias OpenSSL, PolarSSL, wolf, en fin que hay tanto codigo que nose ni por donde empezar.

Alguien me podria poner un simple ejemplo de como se hace??

Muchas gracias
PD: Tiene que ser en C++ si o si.
Título: Re: AES
Publicado por: AlbertoBSD en 2 Septiembre 2016, 15:41 PM
Ya trataste de usur libgcryp?

En un momento mas te pongo un ejemplo usando esta libreria.

la libreria esta muy bien documentada y fácilmente puedes usarla en cualquier proyecto.

Saludos
Título: Re: AES
Publicado por: PimpL en 2 Septiembre 2016, 15:43 PM
Cita de: AlbertoBSD en  2 Septiembre 2016, 15:41 PM
Ya trataste de usur libgcryp?

En un momento mas te pongo un ejemplo usando esta libreria.

la libreria esta muy bien documentada y fácilmente puedes usarla en cualquier proyecto.

Saludos
No, esa no la vi creo, pero tiene que ser compatible con windows eso si, si puede ser que pueda compilar el codigo junto con la otra parte de mi  codigo para qe pueda ser portada y ejecutada desde cualquier windows (es para la empresa en general)

Gracias por contestar
Título: Re: AES
Publicado por: AlbertoBSD en 2 Septiembre 2016, 15:56 PM
Si no mal recuerdo por ahi debe de estar la DLL.

la libreria se tiene que inicializar y posteiormente se usa sin problemas el ejemplo para cifrar es este.

Código (cpp) [Seleccionar]
int encrypt(char *buffer,char *pass,char *iv,int length) {
gcry_error_t err = 0;
gcry_cipher_hd_t aes_hd;
gcry_cipher_open(&aes_hd, GCRY_CIPHER_AES256,GCRY_CIPHER_MODE_CBC, GCRY_CIPHER_SECURE);
err = gcry_cipher_setkey(aes_hd, pass, 32);
if (err) {
fprintf(stderr,"gcry_cipher_setkey(): could not set cipher key\n");
fclose(stderr);
exit(0);
}
err = gcry_cipher_setiv(aes_hd, iv, 16);
if (err) {
fprintf(stderr,"gcry_cipher_setiv(): could not set cipher initialization vector\n");
fclose(stderr);
exit(0);
}
err = gcry_cipher_encrypt(aes_hd, (unsigned char*) buffer, length, NULL, 0);
if (err) {
fprintf(stderr,"gcry_cipher_encrypt(): unable to encrypt file\n");
fclose(stderr);
exit(0);
}
err = gcry_cipher_reset(aes_hd);
gcry_cipher_close(aes_hd);
return err;
}


Ten en cuenta que hay varias formas de usar AES y tiene tambien distintos tamaños AES128 AES256

Ademas de especificar el tipo de bloque a usar.

He usando funciones similares en C# para windows poro no en C++.