Schrift
[thread]10897[/thread]

Datei ver- bzw. entschluesseln mit Crypt::CBC

Leser: 2


<< >> 3 Einträge, 1 Seite
styx-cc
 2007-11-26 15:58
#103040 #103040
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hallo, hat jemand von euch einen kurzen Beispielcode, wie ich eine Datei mit dem Modul Crypt::CBC ver- und gleich wieder entschluesseln kann? Ich habs lange lange versucht, aber es treten immer wieder Fehler auf, am Anfang hat er mir am Ende der entschluesselten Dateien was weggeschnitten, jetzt siehts so aus als ob mitten in der entschluesselten Datei eine Zeile vergessen wurde zu entschluesseln..
Mein Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/perl
use strict;
use warnings;
use Crypt::CBC;
$|++;

crypto('aes.pl', 'encrypting');
crypto('aes.pl', 'decrypting');

sub crypto {
my $file = shift;
my $action = shift;

my $suffix = $action eq 'encrypting' ? 'aes' : 'no';
my $cipher = Crypt::CBC->new(-key => 'pass',
-cipher => 'Rijndael');
my $buffer;
my $buffer_size = 1024;

open SOURCEFILE, '<', $file or die $!;
open DESTFILE, '>', "$file.$suffix" or die $!;
my $length = 0;
$cipher->start($action);
while ( read(SOURCEFILE, $buffer, $buffer_size) ) {
$buffer = $cipher->crypt($buffer);
syswrite(DESTFILE, $buffer, $buffer_size);
}
syswrite(DESTFILE, $cipher->finish, $buffer_size);
close DESTFILE;
close SOURCEFILE or die $!;

return 1;
}

Bei kurzen Dateien klappt es meistens, aber wenn man z.B. versucht die Datei zu nehmen, in welcher der oben gelistete Code steht gehts schief.

Bin langsam am verzweifeln, vielen Dank fuer euren Rat =)

MfG
Pörl.
renee
 2007-11-26 16:12
#103051 #103051
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir mal das Modul CPAN:PerlIO::via::CBC von esskar an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
styx-cc
 2007-11-26 18:48
#103075 #103075
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Supi, klappt endlich, danke! :-)
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/perl
use strict;
use warnings;
use PerlIO::via::CBC;

warn "Not enough arguments, use:\n./aes.pl password de-/encrypt file_name\n" if scalar @ARGV < 3;
my ($password, $action, $file_name) = @ARGV;
start_up($action, $file_name);

sub start_up {
  my $action = shift;
  my $file_name = shift;

  unless (-f $file_name) {
    print "Can't find $file_name.\n";
    exit 0;
  }
  crypto($file_name, $action);
}

sub crypto {
  my $file = shift;
  my $action = shift;
  my $op = $action eq 'encrypt' ? '>' : '<';
  my $suffix = $action eq 'encrypt' ? '.aes' : '';

  PerlIO::via::CBC->config(
    'key'             => $password,
    'cipher'          => 'Rijndael',
  );
  my $fh;
  open($fh, "$op:via(PerlIO::via::CBC)", "$file$suffix");
      if ($action eq 'encrypt') {
        open(SOURCE, '<', $file) or die $!;
          print $fh $_ while(sysread(SOURCE, $_, 1024));
        close SOURCE;
      } else {
        print <$fh>;
      }
  close $fh;
  return 1;
}

Aufruf:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
styx@styx-laptop:~/programmierung/perl/tests$ perl aes.pl pw encrypt aes.pl
styx@styx-laptop:~/programmierung/perl/tests$ perl aes.pl pw decrypt aes.pl.aes
#!/usr/bin/perl
use strict;
use warnings;
use PerlIO::via::CBC;

warn "Not enough arguments, use:\n./aes.pl password de-/encrypt file_name\n" if scalar @ARGV < 3;
.
.
.


Verschluesselt die Datei, entschluesselt sie und gibt sie aus *freu
Pörl.
<< >> 3 Einträge, 1 Seite



View all threads created 2007-11-26 15:58.