Autor
|
Tema: Programa para cifrar archivo de texto (Leído 24,567 veces)
|
doitunkboo
Desconectado
Mensajes: 17
|
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: #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
Mensajes: 243
|
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
Mensajes: 17
|
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
Mensajes: 17
|
Pues tampoco funciona y sigue tirando el error # 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:\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
Mensajes: 243
|
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
Mensajes: 17
|
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
Mensajes: 243
|
¿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
Mensajes: 17
|
¿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
Mensajes: 243
|
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
Mensajes: 17
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa que consulta archivo de texto
Programación C/C++
|
mark182
|
6
|
7,627
|
27 Julio 2011, 22:21 pm
por mark182
|
|
|
Realizar programa en C que ordene nombres desde archivo de texto.
Programación C/C++
|
Irving007
|
2
|
3,816
|
12 Noviembre 2012, 06:32 am
por BlackZeroX
|
|
|
cifrar campo numérico en un archivo de texto
Scripting
|
eolh652
|
4
|
3,576
|
3 Septiembre 2013, 17:39 pm
por Almapa
|
|
|
programa sencillo para cifrar carpetas y que sea para seimpre y gratis sin pu
Software
|
Tinote78
|
1
|
1,698
|
1 Octubre 2017, 03:35 am
por **Aincrad**
|
|
|
¿Cómo incrustar y usar archivo de texto dentro de mi programa?
.NET (C#, VB.NET, ASP)
|
dont'Exist
|
2
|
2,544
|
16 Octubre 2019, 22:08 pm
por dont'Exist
|
|