Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Delphi: Encriptar y desencriptar ficheros con CAPICOM y Delphi
Seguridad Informática


Explicamos en este artículo cómo encriptar y desencriptar ficheros mediante los algoritmos RC2, RC4, DES, 3DES y AES. Mostramos y explicamos el código fuente de la aplicación AjpdSoft Encriptar ficheros con CAPICOM. Explicamos qué es CAPICOM y cómo descargarlo y registrarlo. Mostramos cómo usar CAPICOM con Borland Delphi.



 

Qué es CAPICOM, para qué sirve

CAPICOM es un control ActiveX o una librería (según el caso) de Microsoft que proporciona una interfaz COM para Microsoft CryptoAPI (también llamada Cryptographic Application Programming Interface, Microsoft Cryptography API, ó CAPI). CAPICOM permite usar un conjunto de funciones de CryptoAPI para permitir a los desarrolladores de aplicaciones incorporar de forma sencilla la funcionalidad de firma digital y encriptación en sus aplicaciones. Debido a que utiliza COM, los desarrolladores de aplicaciones pueden acceder a esta funcionalidad en una serie de entornos de programación tales como Microsoft Visual Basic, Visual Basic Script, Active Server Pages (ASP), Microsoft JScript, C + +, Delphi, Java, PHP y otros.

CAPICOM se puede empaquetar como un control ActiveX, para ser instalado en los navegadores y permitir a los desarrolladores Web utilizarla en aplicaciones basadas en Web (ASP, PHP, etc.). Además, CAPICOM cuenta con un SDK (kit de desarrollo de software o Software Development Kit) con las librerías necesarias para que sea usado por lenguajes de programación para desarrollar aplicaciones de escritorio (Delphi, Visual Basic .Net, Visual Basic, etc.).

De esta forma, con CAPICOM podremos implementar la utilidad de uso de certificados digitales en nuestras aplicaciones casi sin esfuerzo, pues todas las funciones necerias para el acceso a estos certificados ya están implementadas y listas para ser usadas.

 

 

Descarga e instalación de Microsoft CAPICOM SDK

En primer lugar deberemos descargar e instalar el SDK de CAPICOM (Platform SDK Redistributable: CAPICOM), disponible gratuitamente en:

http://www.microsoft.com/downloads/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6&DisplayLang=es

Instalaremos CAPICOM SDK ejecutando el fichero descargado capicom_dc_sdk.msi, se iniciará el asistente de instalación de CAPICOM 2.1.0.2 SDK, pulsaremos "Next":

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

Leeremos los términos de licencia, si estamos de acuerdo marcaremos "I accept the terms in the License Agreement" y pulsaremos "Next":

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

Indicaremos en "Location" la carpeta de destino de CAPICOM SDK (pulsando "Browse" podremos cambiarla), pulsaremos "Next" para continuar:

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

Pulsaremos "Install" para iniciar la instalación definitiva de CAPICOM SDK:

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

Una vez finalizada la instalación, pulsaremos "Finish":

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

En realidad, la instalación de CAPICOM 2.1.0.2 SDK lo único que hace es descomprimir una carpeta en la carpeta de destino con los siguientes ficheros y subcarpetas:

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

La carpeta que más nos interesa es "Lib" que contiene la librería "capicom.dll" necesaria para el funcionamiento de nuestra aplicación. Esta librería deberá estar en la carpeta del sistema, en C:WindowsSystem32 y correctamente registrada con "regsvr32.exe" o AjpdSoft Registro de OCX y DLL como explicamos aquí.

AjpdSoft Cómo usar CAPICOM en Delphi para obtener los certificados   digitales instalados en un equipo

 

Registro de la librería capicom.dll en Windows 7

Una vez descargado e instalado el software CAPICOM SDK copiaremos el fichero "capicom.dll" ubicado en la carpeta de instalación de CAPICOM, en la subcarpeta "LibX86":

AjpdSoft Registro de la librería capicom.dll en Windows 7

Lo pegaremos en la carpeta del sistema (system32):

AjpdSoft Registro de la librería capicom.dll en Windows 7

A continuación registraremos la librería capicom.dll o bien usando regsvr32.exe o bien utilizando AjpdSoft Registro de OCX y DLL, abriremos AjpdSoft Registro de OCX y DLL ejecutando el fichero "registroOCX.exe" en modo administrador, pulsando con el botón derecho sobre el fichero descargado y seleccionando "Ejecutar como administrador":

AjpdSoft Registro de la librería capicom.dll en Windows 7

Pulsaremos el botón "<<" para seleccionar el fichero capicom.dll:

AjpdSoft Registro de la librería capicom.dll en Windows 7

En "Tipo" seleccionaremos "DLL (*.dll)", buscaremos el fichero "capicom.dll" en la carpeta System32 de Windows y pulsaremos "Abrir":

AjpdSoft Registro de la librería capicom.dll en Windows 7

Pulsaremos en "Registrar":

AjpdSoft Registro de la librería capicom.dll en Windows 7

Si todo es correcto mostrará un mensaje como este:

AjpdSoft Registro de la librería capicom.dll en Windows 7

Con el texto:

El proceso de registro ha finalizado con el siguiente resultado:
Registrados: 1.
No registrados: 0

Nota: si tenemos activado el control de cuentas de usuario (UAC) de Windows 7, es posible que nos muestre algún mensaje de confirmación al que tendremos que respondier "Sí".

 

 

Cómo usar CAPICOM en Delphi para encriptar y desencriptar ficheros

Para encriptar y desencriptar ficheros mediante el lenguaje de programación Delphi y la herramienta de Microsoft CAPICOM necesitaremos la librería capicom.dll correctamente registrada y el fichero CAPICOM_TLB.pas que podremos descargar del ejemplo de este artículo:

AjpdSoft Encriptar ficheros con CAPICOM

Abriremos Delphi, crearemos un nuevo proyecto, añadiremos algunos componentes al formulario principal: algunos TEdit, TButton, etc. El formulario quedará de la siguiente forma:

AjpdSoft Cómo usar CAPICOM en Delphi para encriptar y desencriptar ficheros

Añadiremos el siguiente código:

  • Para el botón "Encriptar":
procedure TForm1.btEncriptarClick(Sender: TObject);
begin
  if txtAlgoritmoEncriptacion.Text = 'RC2' then
    algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_RC2
  else
    if txtAlgoritmoEncriptacion.Text = 'RC4' then
      algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_RC4
    else
      if txtAlgoritmoEncriptacion.Text = 'DES' then
        algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_DES
      else
        if txtAlgoritmoEncriptacion.Text = '3DES' then
            algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_3DES
        else
          if txtAlgoritmoEncriptacion.Text = 'AES' then
            algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_AES;

  if txtTamanoDatosEncriptar.Text = '256 bits' then
    tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
  else
    if txtTamanoDatosEncriptar.Text = '192 bits' then
      tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS
    else
      if txtTamanoDatosEncriptar.Text = '128 bits' then
        tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS
      else
        if txtTamanoDatosEncriptar.Text = '56 bits' then
          tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS
        else
          if txtTamanoDatosEncriptar.Text = '40 bits' then
            tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS;

  encriptar(txtContrasena.Text, txtFicheroEncriptar.Text,
      txtFicheroDestinoEncriptado.Text);
end;
  • Para el botón "Desencriptar":
procedure TForm1.btDesencriptarClick(Sender: TObject);
begin
  desencriptar (txtContrasenaDesencriptar.Text, txtFicheroDesencriptar.Text,
      txtFicheroDestinoDesencriptado.Text);
end;
  • El procedimiento "desencriptar":
procedure desencriptar (contrasena : string; ficheroDesencriptar : string;
    ficheroDestino : string);
var
  EncryptedData: IEncryptedData;
  Buffer: WideString;
  FileStm: TFileStream;
begin
  //Crear objeto EncryptedData
  EncryptedData := CoEncryptedData.Create;
  //Establecemos la contraseña
  EncryptedData.SetSecret(contrasena, CAPICOM_SECRET_PASSWORD);
  //Cargamos el fichero a desencriptar
  FileStm := TFileStream.Create(ficheroDesencriptar,
      fmOpenRead or fmShareDenyWrite);
  try
    pointer(Buffer):= SysAllocStringByteLen(nil, FileStm.Size);
    FileStm.ReadBuffer(Pointer(Buffer)^, FileStm.Size);
  finally
    FileStm.Free;
  end;
  //Desencriptamos el fichero en memoria
  EncryptedData.Decrypt(Buffer);
  Buffer := EncryptedData.Content;
  //Guardamos el fichero desencriptado en memoria en el fichero destino
  FileStm:= TFileStream.Create(ficheroDestino, fmCreate or fmShareDenyWrite);
  try
    FileStm.WriteBuffer(Pointer(Buffer)^, SysStringByteLen(PWideChar(Buffer)));
  finally
    FileStm.Free;
  end;
  MessageDlg('Fichero desencriptado.', mtInformation, [mbok], 0);
end;
  •  

     

    El procedimiento "encriptar":
procedure encriptar (contrasena : string; ficheroEncriptar : string;
    ficheroDestino : string);
var
  EncryptedData: IEncryptedData;
  Buffer: WideString;
  FileStm: TFileStream;
begin
  //rear objeto EncryptedData
  EncryptedData := CoEncryptedData.Create;
  // Indicamos el algoritmo de encriptación a usar
  EncryptedData.Algorithm.Name := algoritmo;
  //Establecemos el tamaño del algoritmo de encriptación
  EncryptedData.Algorithm.KeyLength := tamanoDatosAlgoritmo;
  //Establecemos la contraseña
  EncryptedData.SetSecret(contrasena, CAPICOM_SECRET_PASSWORD);

  FileStm := TFileStream.Create(ficheroEncriptar,
      fmOpenRead or fmShareDenyWrite);
  try     
    Pointer(Buffer):= SysAllocStringByteLen (nil, FileStm.Size);
    FileStm.ReadBuffer(Pointer(Buffer)^, FileStm.Size);
    EncryptedData.Content:= Buffer;
  finally
    FileStm.Free;
  end;
  //Encriptar fichero
  Buffer:= EncryptedData.Encrypt(CAPICOM_ENCODE_BINARY);
  //Guardar fichero encritado en fichero destino
  FileStm := TFileStream.Create(ficheroDestino, fmCreate or fmShareDenyWrite);
  try
    FileStm.WriteBuffer(Pointer(Buffer)^, SysStringByteLen(PWideChar(Buffer)));
  finally
    FileStm.Free;
  end;
  MessageDlg('Fichero encriptado.', mtInformation, [mbok], 0);
end;
 

El código fuente completo de la aplicación puede verse aquí.

 

La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Para probar la aplicación crearemos un fichero cualquiera con un texto, por jemplo "Prueba de encriptación de fichero por AjpdSoft". Crearemos este fichero de texto plano y lo guardaremos. A continuación ejecutaremos el fichero encriptarFicheros.exe (no necesita instalación pero sí necesita la DLL capicom.dll en el sistema correctamente registrada como explicamos aquí).

Para encriptar un fichero, en primer lugar, lo seleccionaremos pulsando el botón "..." (o bien escribiremos la ruta y nombre en "Fichero a Encriptar"):

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Seleccionaremos el fichero, en nuestro caso "prueba.txt":

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

La aplicación establecerá como fichero de destino encriptado el seleccionado, añadiendo el texto "ENCRIPTADO" al principio, si no se indica otro fichero de destino, será en éste donde se guarde el fichero origen encriptado. En "Contraseña" introduciremos la contraseña para la encriptación que será necesaria para la desencriptación posterior, sin esta contraseña no será posible desencriptar el fichero. En "Algoritmo" seleccionaremos el algoritmo de encriptación, seleccionaremos el Tamaño y pulsaremos "Encriptar":

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Si la encriptación ha sido correcta mostrará el mensaje:

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Con el texto: "Fichero encriptado".

Si accedemos a la carpeta de destino, podremos ver el fichero encriptado creado por la aplicación:

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Si intentamos abrirlo veremos caracteres ilegibles, por lo que el proceso de encriptación se ha realizado correctamente:

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Para desencriptar un fichero, el proceso es similar, pero en "Desencriptar fichero", aunque para este proceso no es necesario indicar el algoritmo de encriptación previo. Para desencriptar el fichero lo seleccionaremos pulsando en el botón "..." de "Fichero a desencriptar", en "Contraseña" introduciremos la contraseña con la que lo encriptamos y pulsaremos el botón "Desencriptar":

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Si todo es correcto mostrará el mensaje:

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Con el texto: "Fichero desencriptado".

Si abrimos el fichero desencriptado, podremos ver que el texto ya es legible nuevamente "Prueba de encriptación de fichero por AjpdSoft":

AjpdSoft La aplicación AjpdSoft Encriptar ficheros con CAPICOM en funcionamiento

Por supuesto, en el ejemplo hemos encriptado y desencriptado un fichero de texto plano, pero AjpdSoft Encriptar ficheros con CAPICOM se puede usar para encriptar y desencriptar cualquier tipo de fichero (mp3, txt, doc, xls, mdb, rar, zip, jpg, pdf, html, tif, asp, php, exe, com, bat, etc.).

 

Anexo

Código fuente source code aplicación AjpdSoft Encriptar ficheros con CAPICOM

A continuación os mostramos el código fuente (source code) completo en Borland Delphi 6 de la aplicación AjpdSoft Encriptar ficheros con CAPICOM:

unit UnidadMenuPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, shellapi, activex, CAPICOM_TLB, Buttons, ComCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    txtContrasena: TEdit;
    txtFicheroEncriptar: TEdit;
    Label2: TLabel;
    txtFicheroDestinoEncriptado: TEdit;
    Label3: TLabel;
    txtAlgoritmoEncriptacion: TComboBox;
    Label4: TLabel;
    LWEB: TLabel;
    GroupBox2: TGroupBox;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    txtContrasenaDesencriptar: TEdit;
    txtFicheroDesencriptar: TEdit;
    txtFicheroDestinoDesencriptado: TEdit;
    btEncriptar: TBitBtn;
    btDesencriptar: TBitBtn;
    btSelFicEncriptar: TBitBtn;
    BitBtn1: TBitBtn;
    bSelFicDes: TBitBtn;
    BitBtn3: TBitBtn;
    dlAbrir: TOpenDialog;
    txtTamanoDatosEncriptar: TComboBox;
    Label9: TLabel;
    btSalir: TBitBtn;
    StatusBar1: TStatusBar;
    procedure LWEBClick(Sender: TObject);
    procedure btEncriptarClick(Sender: TObject);
    procedure btDesencriptarClick(Sender: TObject);
    procedure btSelFicEncriptarClick(Sender: TObject);
    procedure txtFicheroEncriptarChange(Sender: TObject);
    procedure bSelFicDesClick(Sender: TObject);
    procedure txtFicheroDesencriptarChange(Sender: TObject);
    procedure btSalirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  algoritmo: CAPICOM_ENCRYPTION_ALGORITHM = CAPICOM_ENCRYPTION_ALGORITHM_RC2;
  tamanoDatosAlgoritmo: CAPICOM_ENCRYPTION_KEY_LENGTH =
    CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM;



procedure encriptar (contrasena : string; ficheroEncriptar : string;
    ficheroDestino : string);
var
  EncryptedData: IEncryptedData;
  Buffer: WideString;
  FileStm: TFileStream;
begin
  //rear objeto EncryptedData
  EncryptedData := CoEncryptedData.Create;
  // Indicamos el algoritmo de encriptación a usar
  EncryptedData.Algorithm.Name := algoritmo;
  //Establecemos el tamaño del algoritmo de encriptación
  EncryptedData.Algorithm.KeyLength := tamanoDatosAlgoritmo;
  //Establecemos la contraseña
  EncryptedData.SetSecret(contrasena, CAPICOM_SECRET_PASSWORD);

  FileStm := TFileStream.Create(ficheroEncriptar,
      fmOpenRead or fmShareDenyWrite);
  try     
    Pointer(Buffer):= SysAllocStringByteLen (nil, FileStm.Size);
    FileStm.ReadBuffer(Pointer(Buffer)^, FileStm.Size);
    EncryptedData.Content:= Buffer;
  finally
    FileStm.Free;
  end;
  //Encriptar fichero
  Buffer:= EncryptedData.Encrypt(CAPICOM_ENCODE_BINARY);
  //Guardar fichero encritado en fichero destino
  FileStm := TFileStream.Create(ficheroDestino, fmCreate or fmShareDenyWrite);
  try
    FileStm.WriteBuffer(Pointer(Buffer)^, SysStringByteLen(PWideChar(Buffer)));
  finally
    FileStm.Free;
  end;
  MessageDlg('Fichero encriptado.', mtInformation, [mbok], 0);
end;

procedure desencriptar (contrasena : string; ficheroDesencriptar : string;
    ficheroDestino : string);
var
  EncryptedData: IEncryptedData;
  Buffer: WideString;
  FileStm: TFileStream;
begin
  //Crear objeto EncryptedData
  EncryptedData := CoEncryptedData.Create;
  //Establecemos la contraseña
  EncryptedData.SetSecret(contrasena, CAPICOM_SECRET_PASSWORD);
  //Cargamos el fichero a desencriptar
  FileStm := TFileStream.Create(ficheroDesencriptar,
      fmOpenRead or fmShareDenyWrite);
  try
    pointer(Buffer):= SysAllocStringByteLen(nil, FileStm.Size);
    FileStm.ReadBuffer(Pointer(Buffer)^, FileStm.Size);
  finally
    FileStm.Free;
  end;
  //Desencriptamos el fichero en memoria
  EncryptedData.Decrypt(Buffer);
  Buffer := EncryptedData.Content;
  //Guardamos el fichero desencriptado en memoria en el fichero destino
  FileStm:= TFileStream.Create(ficheroDestino, fmCreate or fmShareDenyWrite);
  try
    FileStm.WriteBuffer(Pointer(Buffer)^, SysStringByteLen(PWideChar(Buffer)));

  finally
    FileStm.Free;
  end;
  MessageDlg('Fichero desencriptado.', mtInformation, [mbok], 0);
end;

procedure TForm1.LWEBClick(Sender: TObject);
begin
  ShellExecute(Handle, Nil, PChar('http://www.ajpdsoft.com'),
      Nil, Nil, SW_SHOWNORMAL);
end;

procedure TForm1.btEncriptarClick(Sender: TObject);
begin
  if txtAlgoritmoEncriptacion.Text = 'RC2' then
    algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_RC2
  else
    if txtAlgoritmoEncriptacion.Text = 'RC4' then
      algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_RC4
    else
      if txtAlgoritmoEncriptacion.Text = 'DES' then
        algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_DES
      else
        if txtAlgoritmoEncriptacion.Text = '3DES' then
            algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_3DES
        else
          if txtAlgoritmoEncriptacion.Text = 'AES' then
            algoritmo := CAPICOM_ENCRYPTION_ALGORITHM_AES;

  if txtTamanoDatosEncriptar.Text = '256 bits' then
    tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS
  else
    if txtTamanoDatosEncriptar.Text = '192 bits' then
      tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS
    else
      if txtTamanoDatosEncriptar.Text = '128 bits' then
        tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS
      else
        if txtTamanoDatosEncriptar.Text = '56 bits' then
          tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS
        else
          if txtTamanoDatosEncriptar.Text = '40 bits' then
            tamanoDatosAlgoritmo := CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS;

  encriptar(txtContrasena.Text, txtFicheroEncriptar.Text,
      txtFicheroDestinoEncriptado.Text);
end;

procedure TForm1.btDesencriptarClick(Sender: TObject);
begin
  desencriptar (txtContrasenaDesencriptar.Text, txtFicheroDesencriptar.Text,
      txtFicheroDestinoDesencriptado.Text);
end;

procedure TForm1.btSelFicEncriptarClick(Sender: TObject);
begin
  dlAbrir.Title := 'Seleccione el fichero a encriptar';
  if dlAbrir.Execute then
    txtFicheroEncriptar.Text := dlAbrir.FileName;
end;

procedure TForm1.txtFicheroEncriptarChange(Sender: TObject);
begin
  if FileExists (txtFicheroEncriptar.Text) then
  begin
    txtFicheroDestinoEncriptado.Text :=
        IncludeTrailingPathDelimiter (ExtractFilePath(txtFicheroEncriptar.Text))
        + 'ENCRIPTADO--' + ExtractFileName (txtFicheroEncriptar.Text);
  end;
end;

procedure TForm1.bSelFicDesClick(Sender: TObject);
begin
  dlAbrir.Title := 'Seleccione el fichero a desencriptar';
  if dlAbrir.Execute then
    txtFicheroDesencriptar.Text := dlAbrir.FileName;
end;

procedure TForm1.txtFicheroDesencriptarChange(Sender: TObject);
begin
  if FileExists (txtFicheroDesencriptar.Text) then
  begin
    txtFicheroDestinoDesencriptado.Text :=
        IncludeTrailingPathDelimiter (ExtractFilePath(txtFicheroDesencriptar.Text))
        + 'DESENCRIPTADO--' + ExtractFileName (txtFicheroDesencriptar.Text);
  end;
end;

procedure TForm1.btSalirClick(Sender: TObject);
begin
  Close;
end;

end.

 

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.


Anuncios


Enviado el Lunes, 06 septiembre a las 12:10:27 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A