| 
	
		|  Autor | Tema: Programa para cifrar archivo de texto  (Leído 29,163 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: 245
								
								
								
								
								
								   | 
 
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: 245
								
								
								
								
								
								   | 
 
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: 245
								
								
								
								
								
								   | 
 
¿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: 245
								
								
								
								
								
								   | 
 
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 | 8,161 |  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 | 4,185 |  12 Noviembre 2012, 06:32 am por BlackZeroX
 |  
						|   |   | cifrar campo numérico en un archivo de texto Scripting
 | eolh652 | 4 | 3,950 |  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 | 2,197 |  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 | 3,021 |  16 Octubre 2019, 22:08 pm por dont'Exist
 |    |