AES

Iniciado por PimpL, 2 Septiembre 2016, 15:22 PM

0 Miembros y 1 Visitante están viendo este tema.

PimpL

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.

AlbertoBSD

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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

PimpL

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

AlbertoBSD

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++.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW