Delphi - CIFRADO ASIMETRICO CON LAZARUS

 
Vista:

CIFRADO ASIMETRICO CON LAZARUS

Publicado por Chema (17 intervenciones) el 27/02/2014 16:27:02
Hola a todos.
Estoy actualmente desarrollando una aplicación en Lazarus.
Tengo la necesidad de implementar un algoritmo de cifrado asimétrico y necesitaría hacerme con algunas librerías al respecto o bien código ya desarrollado (ésto será más complicado). El caso es que lo que necesito hacer es muy básico y me bastaría con alguna librería que fuese gratuíta.

He leído en algunas páginas acerca de TurboPower LockBox 2.07, la cual dicen que es gratuíta, pero es para Delhpi y creo que imcompatible con Lazarus.

Si podéis recomendarme algo os lo agradecería.

Muchas gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

CIFRADO ASIMETRICO CON LAZARUS

Publicado por E.T. (1244 intervenciones) el 27/02/2014 18:39:58
Que es lo que pretendes cifrar? mensajes o archivos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CIFRADO ASIMETRICO CON LAZARUS

Publicado por chema (17 intervenciones) el 27/02/2014 19:01:52
Hola, lo que deseo cifrar son archivos.
He visto por ahí para implementar el algoritmo RSA, pero claro, tienes que desarrollar todo a mano, ya que además lo que he encontrado esta en oteo lenguaje y tendría que traducirlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

CIFRADO ASIMETRICO CON LAZARUS

Publicado por E.T. (1244 intervenciones) el 27/02/2014 20:48:02
Bien, pues econtré algo que me parece bastante util, además de que se adecua a tu necesidad, se requiere de openssl para su funcionamiento, puedes intentarlo desde la linea de comandos, solo que necesitas un par de llaves pública y privada, las cuales por cierto tambien puedes generar con openssl.

Primero a generar tus llaves privada y publica:
1. llave privada, en la linea de comando, ya que tengas instalado openssl
1
openssl genrsa -out llave.pem 2048
2. llave publica
1
openssl req -new -x509 -key llave.pem -out publica.cer -days 1825
al generar tu llave publica, se te pediran algunos datos, solo los llenas

1. Genera un archivo con contraseña random
1
openssl rand -base64 2048 > contra.txt
este archivo te servirá de contraseña para encriptar tu archivo de datos

2. Encriptar tu archivo de datos con el archivo de contraseña
1
openssl enc -aes-256-cbc -a -salt -in Archivo_de_datos.rar -out Archivo_de_datos.rar.crypt -pass file:contra.txt
en este punto tu archivo de datos está encriptado (con algoritmo simetrico), usando tu archivo de contraseña

3. Encriptar tu archivo de contraseña con tu llave publica
1
openssl smime -encrypt -binary -in contra.txt -out contra.crypt.pass -aes256 Publica.cer
En este punto tu contraseña está encriptada (con algoritmo asimetrico) con tu llave publica

Para desencriptar tu archivo de datos:
1. Desencriptar tu archivo de contraseña
1
openssl smime -decrypt -binary -in contra.crypt.pass -out contra.tmp -aes256 -recip publica.cer -inkey llave.pem
Aqui tu archivo de contraseña encriptado, queda como el original, contra.txt, con un nuevo nombre que es contra.tmp

2. Desencriptar tu archivo de datos:
1
openssl enc -d -aes-256-cbc -a -in Archivo_de_datos.rar.crypt -out Archivo_de_datos.rar -pass file:contra.tmp
En este punto el archivo original es restaurado.

Precauciones:
-Una vez que tu archivo de contraseña está encriptado, puedes eliminar el original.
-Tu llave privada, debe permanecer de esa forma, privada.
-Para encriptar un archivo solo es necesaria la llave publica y el archivo de contraseña en formato original (txt), si lo eliminaste, lo puedes recuperar del encriptado
-Para desencriptar tu archivo de datos, necesitas la llave publica y la privada, ademas de los dos archivos encriptados (el de datos y el de contraseña)
-Al encriptar un archivo de datos, usa el archivo de contraseña en su formato original (txt), si no, no tendria caso todo esto
-Si vas a usar esto para comunicaciones, entre dos personas por ejemplo, recomiendo que cada quien tenga su par de llaves publica y privada, y cada quien debe tener la llave publica del otro para encriptar mensajes; y que solo el receptor pueda verlo con su llave privada, sería necesario enviar los dos archivos encriptados al receptor para poder abrir el mensaje.
-Si solo se usa para encriptar archivos, pues ten cuidado de guardar bien tu llave privada

Todo fue probado antes de publicarse, espero te sea de utilidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CIFRADO ASIMETRICO CON LAZARUS

Publicado por Chema (17 intervenciones) el 27/02/2014 20:57:31
Hola E.T. Muy útil lo que me sugieres.

Sin embargo, desearía que estuviese implementado en la misma aplicación, de tal forma que , o bien pueda conseguir código para implementarlo o bien pueda encontrar un paquete de componentes libre y gratuíto e instalable.

De todas formas, tu sugerencia es muy buena.
Gracias E.T.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

CIFRADO ASIMETRICO CON LAZARUS

Publicado por E.T. (1244 intervenciones) el 27/02/2014 23:34:24
Olvidé mencionar, existe un codigo en delphi, para ejecutar lineas de comando, pero no se si funcione para lazarus
te dejo la liga
http://www.clubdelphi.com/trucos/index.php?id=54
ya solo es cuestion de ver si te funciona para lazarus, ademas si no se puede, puedes a travez de lazarus, crear archivos bat y ejecutarlos con la aplicacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar