#!/usr/bin/perl

# $sum = suma_kontrolna_md5_MD5( $plik )
sub suma_kontrolna_md5_MD5{
    use MD5; # Modul CPAN, http://www.perl.com/CPAN/modules

    my $plik = shift;
    open SUM, "<$plik" or die "Nie mozna otworzyc pliku $plik ($!)";

    # Obliczenie sumy kontrolnej calego pliku w jednym przebiegu.
    my $kontekst = MD5->new;
    $kontekst->addfile(SUM);

    # Konwersja do postaci ekranowej.
    return $kontekst->hexdigest();
}

$plik = shift;
print suma_kontrolna_md5_MD5($plik), "\n";

__END__

# $sum = suma_kontrolna_md5_SSL( $plik )
sub suma_kontrolna_md5_SSL {
    use SSLeay;

    my $plik = shift;
    open SUM, "<$plik"
        or die " Nie mozna otworzyc pliku $plik ($!)";

    # Obliczenie sumy kontrolnej pliku.
    my $md = SSLeay::MD->new("md5");
    while( <SUM> ) {
        # Obliczanie musi byc wykonane partiami.
        $md->update($_);
    }

    # Konwersja do postaci ekranowej.
    return unpack("H*",$md->final);
}

