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)
| | |-+  Programa para cifrar archivo de texto
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Programa para cifrar archivo de texto  (Leído 25,117 veces)
doitunkboo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Programa para cifrar archivo de texto
« en: 6 Mayo 2023, 17:25 pm »

Hola, estoy tratando de compilar este código y DEV-C++ me tira el error:
7 [Warning] 'int AES_set_encrypt_key(const unsigned char*, int, AES_KEY*)' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]

Como lo arreglo? porque no me lo compila:
Código:
#include <openssl/aes.h>
#include <stdio.h>
#include <string.h>

void encrypt_AES(const unsigned char *plaintext, int plaintext_len, const unsigned char *key, unsigned char *ciphertext) {
    AES_KEY aes_key;
    AES_set_encrypt_key(key, 128, &aes_key);
    AES_encrypt(plaintext, ciphertext, &aes_key);
}

int main() {
const char *filename = "archivo.txt";
    const unsigned char key[] = "clave secreta";
    const int block_size = 12;
    unsigned char plaintext[block_size];
    unsigned char ciphertext[block_size];

    // Leer el archivo de texto
    FILE *file = fopen(filename, "rb");
    if (file == NULL) {
        printf("Error al abrir el archivo.\n");
        return 1;
    }
    fread(plaintext, block_size, 1, file);
    fclose(file);

    // Cifrar el archivo de texto
    encrypt_AES(plaintext, block_size, key, ciphertext);

    // Escribir el archivo cifrado
    FILE *output_file = fopen("archivo_cifrado.txt", "wb");
    if (output_file == NULL) {
        printf("Error al crear el archivo cifrado.\n");
        return 1;
    }
    fwrite(ciphertext, block_size, 1, output_file);
    fclose(output_file);

    printf("Archivo cifrado exitosamente.\n");
    return 0;
}


En línea

RayR

Desconectado Desconectado

Mensajes: 243


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #1 en: 6 Mayo 2023, 18:54 pm »

Pues es justo lo que el warning te dice: la función AES_set_encrypt_key está en proceso de obsolescencia y se desaconseja su uso. Lo correcto sería que busques cuál función la sustituye en OpenSSL 3.0 y la uses en su lugar. O si no quieres hacer eso, podrías simplemente desactivar esa advertencia con la opción: -Wno-deprecated-declarations.


En línea

doitunkboo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #2 en: 7 Mayo 2023, 23:12 pm »

Pues es justo lo que el warning te dice: la función AES_set_encrypt_key está en proceso de obsolescencia y se desaconseja su uso. Lo correcto sería que busques cuál función la sustituye en OpenSSL 3.0 y la uses en su lugar. O si no quieres hacer eso, podrías simplemente desactivar esa advertencia con la opción: -Wno-deprecated-declarations.

Entiendo, gracias por la ayuda.
En línea

doitunkboo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #3 en: 11 Mayo 2023, 14:18 pm »

Pues tampoco funciona y sigue tirando el error
Código:
# Project: Encriptador
# Makefile created by Embarcadero Dev-C++ 6.3

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o
LINKOBJ  = main.o
LIBS     = -L"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib" -L"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/lib" -static-libgcc -L"C:/Program Files/OpenSSL-Win64/lib" -mwindows
INCS     = -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" -I"C:/Program Files/OpenSSL-Win64/include"
CXXINCS  = -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include" -I"C:/Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++" -I"C:/Program Files/OpenSSL-Win64/include"
BIN      = Encriptador.exe
CXXFLAGS = $(CXXINCS) -lssl -lcrypto
CFLAGS   = $(INCS)
DEL      = C:\Program Files (x86)\Embarcadero\Dev-Cpp\devcpp.exe INTERNAL_DEL

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
${DEL} $(OBJ) $(BIN)

$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)

Código:
C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\bin\ld.exe	main.o:main.cpp:(.text+0x4a): undefined reference to `AES_set_encrypt_key'
C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\bin\ld.exe main.o:main.cpp:(.text+0x67): undefined reference to `AES_encrypt'
C:\Users\xxxxxx\Documents\Dev-C\Encriptador\collect2.exe [Error] ld returned 1 exit status
25 C:\Users\xxxxxx\Documents\Dev-C\Encriptador\Makefile.win recipe for target 'Encriptador.exe' failed

Dice que esas referencias no están definidas pero si lo están, alguien me puede explicar donde está el problema? Gracias
En línea

RayR

Desconectado Desconectado

Mensajes: 243


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #4 en: 12 Mayo 2023, 04:13 am »

Bueno, eso es otro problema distinto. Se trata de un error de enlazado. Hay varias razones para que se produzca el error de referencias no definidas, la más común es que el enlazador no encuentre las bibliotecas/librerías donde se definen esas funciones. En tu makefile incluyes la ruta "C:/Program Files/OpenSSL-Win64/lib", ¿estás seguro de que los archivos .a correspondientes (en este caso, libssl y libcrypto) se encuentran exactamente en ese directorio?  Porque es algo común que las bibliotecas open source creen subdirectorios para cada compilador. Yo lo primero que haría sería verifica que el directorior sea el correcto.
En línea

doitunkboo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #5 en: 12 Mayo 2023, 19:37 pm »

He instalado "Win64OpenSSL-3_1_0.msi" y luego he configurado las variables de entorno tanto en Windows como en el Dev-C++, y he probado también a instalar la versión de 32bits y tampoco funciona, no se que hacer, he buscado info y tutos por la red pero no hay absolutamente nada.
Con Visual Studio es más sencillo todo esto o hay que hacer lo mismo?

Saludos
En línea

RayR

Desconectado Desconectado

Mensajes: 243


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #6 en: 12 Mayo 2023, 21:10 pm »

¿Pero hiciste siquiera lo que te dije de asegurarte de que esos archivos .a estén en la ruta indicada: "C:/Program Files/OpenSSL-Win64/lib"? No en un subdirectorio de esa ruta sino en esa ruta exacta. Primero verifica eso, pues si no están ahí, el problema no se va a arreglar mágicamente instalando y desinstalando cosas sino configurando la ruta correcta. Y eso es con todos los compiladores.
En línea

doitunkboo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #7 en: 14 Mayo 2023, 11:03 am »

¿Pero hiciste siquiera lo que te dije de asegurarte de que esos archivos .a estén en la ruta indicada: "C:/Program Files/OpenSSL-Win64/lib"? No en un subdirectorio de esa ruta sino en esa ruta exacta. Primero verifica eso, pues si no están ahí, el problema no se va a arreglar mágicamente instalando y desinstalando cosas sino configurando la ruta correcta. Y eso es con todos los compiladores.

Por supuesto que lo hice, he llegado incluso a copiar los lib e includes de Openssl directamente en las carpetas correspondientes que tiene Dev-C++ y aún así tampoco los encuentra, es totalmente ridículo que este programa no sea capaz de encontrar un archivo aunque le digas donde está.

Al final lo he hecho en Python con Visual Studio Code, y ha funcionado a la primera, la facilidad con que instalas la libreria pycryptodome y lo sencillo que es todo comparado con Dev-C++, es impresionante, nada que ver.

Desde luego Dev-C++ no te pone las cosas nada fáciles a la hora de programar, me ha decepcionado bastante.

Gracias por la ayuda, aunque no haya logrado mi objetivo con Dev-C++, pero bueno lo conseguí con Python jeje.
Un saludo.
« Última modificación: 14 Mayo 2023, 11:05 am por doitunkboo » En línea

RayR

Desconectado Desconectado

Mensajes: 243


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #8 en: 14 Mayo 2023, 17:29 pm »

Se me pasó este detalle: las bibliotecas están en la sección CXXFLAGS de tu makefile. Es en LIBS donde deberían ir. Si pusiste -lssl y -lcrypto en la sección de parámetros para el compilador en Dev-C++, ese fue el error. Deberías haberlo hecho en los parámetros para el enlazador/linker. Eso debería arreglar el problema, si aún te interesa hacerlo en C++.
En línea

doitunkboo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Programa para cifrar archivo de texto
« Respuesta #9 en: 15 Mayo 2023, 23:13 pm »

Se me pasó este detalle: las bibliotecas están en la sección CXXFLAGS de tu makefile. Es en LIBS donde deberían ir. Si pusiste -lssl y -lcrypto en la sección de parámetros para el compilador en Dev-C++, ese fue el error. Deberías haberlo hecho en los parámetros para el enlazador/linker. Eso debería arreglar el problema, si aún te interesa hacerlo en C++.

Gracias pero ya lo tengo todo hecho en Python, incluso con interfaz gráfica, es todo mucho mas fácil y sencillo.

Un saludo
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines