2012-03-02 21 views
8

Necesito una biblioteca de cifrado (VCL o no) que trabajará con Delphi XE2 & cadenas Unicode,
& 32 bits compila.
Lo necesito para almacenar datos en una base de datos.de componentes para el cifrado

Respuesta

9

La página de criptografía Delphi (DCPCrypt) es una biblioteca de código abierto escrita por David Barton ([email protected]) http://www.cityinthesky.co.uk/opensource/dcpcrypt que proporciona una colección de componentes criptográficos de clave simétrica, muy completos y de libre exportación.

+0

Gracias. Ya lo he comprobado ... No es adecuado para DelphiXE2. ¡Lo necesito para compilaciones de 64 bits también! –

+2

es de código abierto, involucrarse –

+0

:) Encontré un usuario que ya lo hizo. –

5

Encontré this en el foro de Embarcadero, una versión de DCPCrypt que ha sido actualizado por un usuario.
Aquí está el code si alguien tropieza con el mismo problema.

También encontraron esta library (TurboPower LockBox) que soporta Delphi XE2

1

Todos los algoritmos de encriptación estándar operan en bytes o bits. Debería poder utilizar cualquier implementación que admita Delphi XE2 Win32 y Win64, al menos mientras usted se haga responsable de la decodificación y codificación de sus cadenas Unicode. Hay una clase TEncoding en la unidad RTL SysUtils que debe usar para convertir sus cadenas Unicode hacia y desde TBytes, usando la codificación de su elección.

La razón por la que muchas implementaciones Delphi de algoritmos de encriptación toman los parámetros de cadena, es principalmente histórica, y no debe entenderse como si las implementaciones necesariamente supieran qué es un carácter o una cadena. En muchas versiones de Delphi, antes de agregar el tipo TBytes al VCL/RTL, había cinco formas de declarar dichos métodos, y el uso de cadenas era a menudo el más conveniente.

  1. Untyped const and var parameters. Esto es lo que han usado el procedimiento Move y TStream. La desventaja de esto es que el error de uso más común es tratar de pasar una variable de tipo de referencia, como una cadena o una matriz dinámica, sin desreferenciarla primero.
  2. Punteros sin par. Problema similar Desarrolladores que provienen, por ejemplo, un fondo básico o de Java no está necesariamente familiarizado con el concepto de punteros y tipos de referencia.
  3. Abrir parámetros de matriz. Solo se puede acceder por elemento, por lo que se combinan mal con algoritmos de cifrado que se implementan para operar en bloques continuos de memoria.
  4. Un archivo TBytes específico de la biblioteca = tipo de Byte. El lenguaje Delphi está fuertemente tipado, por lo que esto solo funcionaría si el desarrollador de la aplicación usara el mismo tipo de biblioteca específica para empezar, lo que rápidamente se volvería inviable, por ej. si el desarrollador primero tuvo que tomar un TnxBytes de una base de datos NexusDB, conviértalo en un StreamSec tBytes para encriptarlo, y luego en un Indy TIdBytes para pasarlo a través de una conexión TIdTCPConnection.
  5. (Ansi) strings. Seamos sinceros. Por todos los motivos anteriores (y algunos más, como el soporte de lenguaje y RTL), la mayoría de los desarrolladores utilizaban cadenas como almacenamientos intermedios de memoria de tamaño variable.
+0

Gracias Henrick, has hecho algunos muy buenos comentarios. –