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: 22
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.289
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: 30
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: 22
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: 22
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
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 22:23:06.


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