• Publicidad

Módulo de cifrado de ficheros

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Módulo de cifrado de ficheros

Notapor ricar » 2010-07-01 03:29 @186

Hola.

¿Alguien conoce algún modulo que cifre y descifre ficheros en función de claves públicas y privadas?

Crypt::RSA hace esto mismo pero no cifra ficheros si no un string.

Un saludo,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Publicidad

Re: Módulo de cifrado de ficheros

Notapor explorer » 2010-07-01 07:39 @360

Hummm... ¿Y no se podría leer el fichero a memoria, en una variable escalar, cifrarla, y escribir el resultado como un nuevo fichero?

Son solo unas líneas más... y no creo que los ficheros sean más grandes que la cantidad de memoria del ordenador.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Módulo de cifrado de ficheros

Notapor ricar » 2010-07-01 08:16 @386

Hola, explorer.

¿¿Te refieres a pasar el fichero a un array e ir cifrando cada posición de forma independiente??

Si es eso a lo que te refieres, el problema se daría a la hora de descifrarlo, puesto que no es lo mismo cifrar un texto entero que valor a valor, no da el mismo mensaje cifrado. Además sería un poco inseguro puesto que se podría llegar a deducir el texto.

No sé si te he entendido bien.

Otra forma que había pensado era, en leer el fichero en el array de turno y pasarlo a un sólo string, manteniendo los saltos con una etiqueta o similar. A la hora de descifrarlo sólo tendría que interpretar esas etiquetas para darle el formato original.

Pero preferiría un módulo, si lo hubiese, que cifrase/descifrase ficheros en función de una clave pública y privada.

Saludos,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Módulo de cifrado de ficheros

Notapor explorer » 2010-07-01 10:21 @473

No, he dicho en una variable escalar :)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Crypt::RSA;
  3.  
  4. use common::sense;
  5. use open 'locale';
  6.  
  7.  
  8. ### Constantes
  9. my $fichero_nombre = 'residencias.pdf';
  10. my $fichero_longitud = -s $fichero_nombre;
  11.  
  12.  
  13. ### Programa
  14. say "Cifrando $fichero_nombre, de tamaño $fichero_longitud bytes...";
  15.  
  16.  
  17. ## Lectura del fichero de partida
  18. say "Leyendo fichero a cifrar...";
  19.  
  20. open my $F, q[<], $fichero_nombre;
  21. binmode $F;
  22. read    $F, my $buffer, $fichero_longitud;
  23. close   $F;
  24.  
  25. say "Leídos ", length($buffer), " bytes...";
  26.  
  27.  
  28. ## Cifrado
  29. my $rsa = Crypt::RSA->new;
  30.  
  31. say "Generando las claves...";
  32.  
  33. my ($public, $private) =
  34.     $rsa->keygen (
  35.         Identity  => 'Lord Macbeth <[email protected]>',
  36.         Size      => 512,
  37.         Password  => 'A day so foul & fair',
  38.         Verbosity => 1,
  39.     ) or die $rsa->errstr();
  40.  
  41.  
  42. say "Cifrando...";
  43.  
  44. my $cyphertext =
  45.     $rsa->encrypt (
  46.         Message    => $buffer,
  47.         Key        => $public,
  48.         Armour     => 1,
  49.     ) || die $rsa->errstr();
  50.  
  51. say "Longitud del cifrado: ", length($cyphertext), " bytes...";
  52.  
  53.  
  54. ## Grabación en disco
  55. say "Grabando a disco...";
  56.  
  57. open my $F, q[>], "$fichero_nombre.cifrado";
  58. binmode $F;
  59. print   $F $cyphertext;
  60. close   $F;
  61.  
  62.  
  63. ## Comprobación: lectura del fichero cifrado
  64. say "Leyendo fichero cifrado...";
  65.  
  66. open my $F, q[<], "$fichero_nombre.cifrado";
  67. read    $F, my $fichero_cifrado, -s "$fichero_nombre.cifrado";
  68. close   $F;
  69.  
  70. say "Leídos ", length($fichero_cifrado), " bytes...";
  71.  
  72.  
  73. ## Descifrado
  74. say "Descifrando...";
  75.  
  76. my $plaintext =
  77.     $rsa->decrypt (
  78.         Cyphertext => $fichero_cifrado,
  79.         Key        => $private,
  80.         Armour     => 1,
  81.     ) || die $rsa->errstr();
  82.  
  83.  
  84. ## Informar
  85. if ($plaintext eq $buffer) {
  86.     say "Es correcto el cifrado/descifrado";
  87. }
  88. else {
  89.     say "No es correcto el cifrado/descifrado";
  90. }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Sale
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Cifrando residencias.pdf, de tamaño 215244 bytes...
Leyendo fichero a cifrar...
Leídos 215244 bytes...
Generando las claves...
.......................+(32)....+..........+...+.+..+(52)............+(100)......+..+.+
Cifrando...
Longitud del cifrado: 846226 bytes...
Grabando a disco...
Leyendo fichero cifrado...
Leídos 846226 bytes...
Descifrando...
Es correcto el cifrado/descifrado
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Comienzo del fichero cifrado:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
-----BEGIN COMPRESSED RSA ENCRYPTED MESSAGE-----
Version: 1.99
Scheme: Crypt::RSA::ES::OAEP

eJwAAYD+fzEwADYyNjE3NgBDeXBoZXJ0ZXh0v4Z1z196By6E0zUXwswQhbFXgwYoU1zYzwyJenWY
dEOCVjPugHKoY2IHTSXGJi2ycjKsP/Sg7UuW8NjhmvViVmUflv/lAHWW/vAtJIU2OXmtNuINPDL7
hdWZfE0JGLQ7OMc5dn2K/9UtTiparqqf/ZMiIK9thJufVMRAxGG4FdBcMhcoqTwj6rAip7lcCqrV
Lcp10k9h3/psMettH+EojenQmgBvLZoTbuuW7Wrd9DqGTwHyrqy9W4lcd551AF5UaG/ppXuLV88s
ZkWv/9eYyfNahekH9oZ6AZw3/PJmeP/k72ngXpHjTN18xYpBm2US6ser59D6fxN4dvWh6SOcSp58
1+pYr/HGF+ssyg6Ooyn7BK5yC/qV5y2LchpWEsOtiQQXh9H0JOkrhGAeVXUwgVU0qXQuRUtems1D
YQRy3aOuwDjn17by3SCorP/agjZiEUzXR3o7lyUpsGzIA2ZDic0k+AoRJghB9Pc1x1vUlPXqEonE
XjfWzXe5nFddto9m4ocdPosC8/OHkGpLPgmWhhU5t2JEoiBj/dwciI7uxvec1XMJHMaGbEsPBMXl
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


No he encontrado módulos que filtren ficheros. Quizás he buscado mal en CPAN.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Módulo de cifrado de ficheros

Notapor ricar » 2010-07-02 01:30 @104

Gracias explorer.

Probaré lo que dices y os contaré.

Un saludo,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 23 invitados