Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Utilizar modulo encriptacion en Delphi

Hola a todos!

Estoy intentando utilizar unas librerias de Delphi del compañero Seonane para encriptar con AES-256:

http://delphi.jmrds.com/?q=node/43

Esto lo quiero incorporar en un proyecto de C++ Builder 6 y como ya he realizado otras veces no hay problema en incorporar units .pas, pero en este caso al compilar me esta dando un problema que no encuentra o no puede enlazar con la dll del sistema Crypt32.dll. que creo esta perfectamente declarado en el codigo.

Código Delphi [-]
function CryptBinaryToString(pbBinary: PByte; cbBinary: DWORD; dwFlags: DWORD;
  pszString: PChar; var pcchString: DWORD): BOOL; stdcall;
  external 'Crypt32.dll' name 'CryptBinaryToStringA';

Exactamente el mensaje de error que me da el linker es:

Código Delphi [-]
[Linker Error] Unresolved external 'CryptStringToBinaryA' referenced from ....
]

Las otras librerias .pas me las compila bien. Solo falla el enlace con estas API de Guindows.

Gracias.
__________________
Saludos,

Bitman

Última edición por Toni fecha: 21-10-2011 a las 13:34:14.
Responder Con Cita
  #2  
Antiguo 21-10-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
TAl y como explica en la página de Seoane, esas funciones utilizan la API de Windows. Debes asegurarte de que la API está instalada en tu sistema.

Si no lo tienes segúramente deberás instalar esto.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 21-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Toni.

Sin desvalorizar la biblioteca (library = biblioteca) de Domingo Seoane, que con toda seguridad es muy buena, te comento que hace algunas semanas intenté usar en directo las DLLs nativas de Microsoft del enlace que amablemente señala Neftalí. No obstante, entrando desde esa página al enlace que reza Alternatives to Using CAPICOM, me di cuenta de la variedad y versatilidad de clases que .NET tiene en el terreno de la criptografía.

Como CAPICOM me resultaba insuficientemente amigable y no encontraba alternativas Delphi / Win32 para el objetivo que me habían encomendado (hacer firma digital XML), opté por escribir una sencilla clase en C# con una versión de prueba de Visual Studio, y compilé dicha clase como un ensamblaje (assembly) DLL capaz de ser llamado desde aplicaciones Win32. La clave para lograr esta compatibilidad es que la biblioteca generada exporte tu clase .NET como interfaz COM.

Para quienes encuentren interesante esto, en la ayuda de Delphi (y supongo que en la de C++ Builder también) hay información al respecto en los apartados: Requirements for COM interoperability, .NET components and type libraries y Accessing user-defined .NET components (recomiendo leerlos en ese orden). Al parecer Microsoft acuña los términos interoperability y COM Callable Wrappers (CCW); buscándolos en Google se encuentran varios ejemplos que pueden resultar útiles (además del que Borland describe en la ayuda).

Sin más propósito que enriquecer el tema.

Saludos.

Al González.
Responder Con Cita
  #4  
Antiguo 21-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Hola,

Muchas gracias por ambas respuestas.

Cita:
Neftali dijo:
Debes asegurarte de que la API está instalada en tu sistema.
La libreria en cuestion es la dll Crypt32.dll que forma parte de la API de Windows y que esta en mi sistema. Ademas la tengo copiada en el propio directorio de la aplicación. Pero este problema que tengo parece mas algo de linkado que otra cosa. Como no domino la sintaix de Delphi no se si es necesario algo mas para enlazar la libreria de forma dinamica?

Al Gonzalez, te agradezco mucho tambien tu aportación. Pero creo que si puedo utilizar estas librerias inicialmente es mas que suficiente y al disponer de los fuentes me permite hacer algo muy compacto.

Como comentario, deciros que esto lo quiero para realizar una pequeña utileria para Firebird para poder encriptar/desencriptar facilmente todo el código de procedimientos almacenados de una base de datos. Que para quien realiza aplicaciones con un peso muy importante en la base de datos es importante proteger. La cual cuando este terminada la pondre a disposición del Club Delphi.
__________________
Saludos,

Bitman

Última edición por Toni fecha: 21-10-2011 a las 18:42:42.
Responder Con Cita
  #5  
Antiguo 21-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Toni Ver Mensaje
...parece mas algo de linkado que otra cosa...
Es así, tienes razón.
La solución es sencilla, debes crear Crypt32.lib, para ello abre una consola de comandos en la carpeta donde tienes Crypt32.dll y ejecuta:
Código:
implib Crypt32.lib Crypt32.dll
Seguidamente en tu código detrás de los #include... añade esta línea:
Código:
#pragma comment(lib, "Crypt32.lib")
Ahora puedes compilar, enlazará sin problemas.


Saludos.
Responder Con Cita
  #6  
Antiguo 22-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Eres es un monstruo!!

Con estos funciona perfectamente!

Me despistaba porque desde el C++ Builder puedes llamar todas las apis sin necesidad de declararlas (estan todas declaradas en los archivos de cabecera) ni hacer todo esto, pero como esta en un modulo .pas ya hacia su propia declaracion externa.... pero bueno ya esta.

Muchas gracias!
__________________
Saludos,

Bitman
Responder Con Cita
  #7  
Antiguo 23-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Toni Ver Mensaje
Eres es un monstruo!!
Gracias.

Cita:
Empezado por Toni Ver Mensaje
Me despistaba porque desde el C++ Builder puedes llamar todas las apis sin necesidad de declararlas (estan todas declaradas en los archivos de cabecera)...
En esto te equivocas.

Sólo están las APIs que "existían" en cada momento al aparecer la versión correspondiente. Builder 6 es bastante antiguo...
Para usar las APIs modernas las tienes que declarar e importar.


Saludos.
Responder Con Cita
  #8  
Antiguo 23-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Cita:
Sólo están las APIs que "existían" en cada momento al aparecer la versión correspondiente. Builder 6 es bastante antiguo...
Para usar las APIs modernas las tienes que declarar e importar.
Tienes toda la razon, pero en concreto las apis que se utilizan en este modulo sin estan declaradas en mi C++ Builder en el archivo de cabecera: wincrypt.h y todas las 'tipicas' de win32 estan en el windows.h

Pero igualmente, eres un monstruo!
__________________
Saludos,

Bitman
Responder Con Cita
  #9  
Antiguo 24-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Hola compañeros!

Tal y como os comente, subo una primera version beta de esta pequeña utilidad para Firebird que nos permite encriptar/desencriptar los procedimientos almacenados de una base de datos. A mi personalmente me va a ir muy bien para simplificar el mantenimiento de mis aplicaciones basadas en Firebird.

Lo he subido en este hilo pero si creeis que es mas oportuno subir en otro hilo vosotros mismos.

Nota: Agradecimientos al compañero Seonane por sus modulos de encriptacion.
Nota2: Ojo es una beta!
__________________
Saludos,

Bitman
Responder Con Cita
  #10  
Antiguo 24-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
No sube mi fichero adjunto
Y solo tiene 195kb....me podeis hechar una mano, gracias.
__________________
Saludos,

Bitman
Responder Con Cita
  #11  
Antiguo 24-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Por qué no sube?, ¿qué mensaje sale?
Responder Con Cita
  #12  
Antiguo 24-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Si, perdona. Dice que 'Excede tu cuota por 102,0 KB' pero teoricamente puedo suber hasta 293kb y ocupa menos.
__________________
Saludos,

Bitman
Responder Con Cita
  #13  
Antiguo 24-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Súbelo al FTP, hay una sección "Builder" con varios apartados: Componentes, Ejemplos, Manuales, Otros documentos y Tools.
Puedes subirlo al que creas más conveniente y luego lo enlazas desde tu mensaje.
Responder Con Cita
  #14  
Antiguo 24-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, ¡¡¡no subas un ejecutable!!!.
Por cuestiones de seguridad, no lo podemos admitir, ha sido borrado.
Sube el código fuente en un zip o un rar, directamente.
Responder Con Cita
  #15  
Antiguo 24-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Disculpa, no sabia que no se permitia ejecutables.

Bueno la idea era compartir la utilidad, si subo los fuentes quien no tenga la misma version C++ Builder no podra compilarlo.

http://www.terawiki.clubdelphi.com/B...s firebird.rar
__________________
Saludos,

Bitman

Última edición por Toni fecha: 24-10-2011 a las 22:43:46.
Responder Con Cita
  #16  
Antiguo 24-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Toni Ver Mensaje
Aqui esta el enlace:
¿Has leído mi mensaje anterior y el MP que te he enviado?
Responder Con Cita
  #17  
Antiguo 24-10-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Si, ahora veo el mensaje Casimiro. Ya he subido los fuentes. Como decia en el ultimo post la idea era compartir tambien el ejecutable para quien quiera probarlo o utilizarlo y habra mucha gente del foro que no tenga C++ Builder para compilarlo.
__________________
Saludos,

Bitman
Responder Con Cita
  #18  
Antiguo 24-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que esto es un sitio de compartir código, aprender, etc. pero un ejecutable es todo lo contrario. Seguro que quien esté interesado consigue compilarlo.
Puedes incluir el ejecutable, con cuidado de revisar antes con el antivirus, pero debe ir todo el código fuente.

Última edición por Casimiro Notevi fecha: 24-10-2011 a las 23:25:38.
Responder Con Cita
  #19  
Antiguo 26-07-2012
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Problemas utilizando esta libreria en W2008 Server

Hola a todos,

Alguien tiene idea porque puede fallar este modulo de encriptacion AES256 que utilizo en este ejecutable por el momento solo en servidores con Windows 2008 Server 64 bits?

La funcion que encripta retorna una cadena vacia, en lugar de la cadena encriptada..

En el resto de maquinas que he probado me ha funcionado bien. Sobretodo si alguien utiliza esta utilidad que tenga la precaución de hacer un backup primero de la base de datos.

Saludos!
__________________
Saludos,

Bitman
Responder Con Cita
  #20  
Antiguo 27-07-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Yo revisaría las fuentes.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Encriptación con AES en Delphi 7 nlsgarcia Varios 3 01-09-2011 07:36:20
Encriptacion MD5+RSA en delphi jourdan OOP 9 24-03-2010 01:01:08
en delphi como escribir modulo para apache. como el de php JXJ Varios 5 16-12-2009 04:50:52
Encriptacion y UTF dape PHP 4 31-03-2009 14:34:21
Encriptación Novás PHP 1 12-06-2007 05:24:45


La franja horaria es GMT +2. Ahora son las 12:30:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi