CGI::Application::Plugin::Authentication::Driver::Filter::md5 - MD5 filter


CGI-Application-Plugin-Authentication documentation Contained in the CGI-Application-Plugin-Authentication distribution.

Index


Code Index:

NAME

Top

CGI::Application::Plugin::Authentication::Driver::Filter::md5 - MD5 filter

VERSION

Top

This document describes CGI::Application::Plugin::Authentication::Driver::Filter::md5 version 0.20

METHODS

Top

filter ( (hex base64 binary), $string )

This will generate an MD5 hash of the string in the requested format. By default, hex encoding is used.

 my $filtered = $class->filter('base64', 'foobar'); # OFj2IjCsPJFfMAxmQxLGPw

 -or-

 my $filtered = $class->filter(undef, 'foobar'); # 3858f62230ac3c915f300c664312c63f




check ( (hex base64 binary), $string, $md5 )

This will generate an MD5 hash of the string, and compare it against the provided MD5 string. If no encoding type is specified, the length of the MD5 string will be tested to see what format it is in.

 if ($class->check(undef, 'foobar', '3858f62230ac3c915f300c664312c63f')) {
     # they match
 }




SEE ALSO

Top

CGI::Application::Plugin::Authentication::Driver, Digest::MD5, perl(1)

AUTHOR

Top

Cees Hek <ceeshek@gmail.com>

LICENCE AND COPYRIGHT

Top


CGI-Application-Plugin-Authentication documentation Contained in the CGI-Application-Plugin-Authentication distribution.

package CGI::Application::Plugin::Authentication::Driver::Filter::md5;

use strict;
use warnings;
our $VERSION = '0.20';

use UNIVERSAL::require;

sub check {
    my $class    = shift;
    my $param    = shift;
    my $plain    = shift;
    my $filtered = shift;

    if ($param) {
        return ( $class->filter( $param, $plain ) eq $filtered ) ? 1 : 0;
    } elsif ( length($filtered) == 16 ) {
        return ( $class->filter( 'binary', $plain ) eq $filtered ) ? 1 : 0;
    } elsif ( length($filtered) == 22 ) {
        return ( $class->filter( 'base64', $plain ) eq $filtered ) ? 1 : 0;
    } else {
        return ( $class->filter( undef, $plain ) eq $filtered ) ? 1 : 0;
    }
}

sub filter {
    my $class = shift;
    my $param = lc shift || 'hex';
    my $plain = shift;

    Digest::MD5->require || die "Digest::MD5 is required to check MD5 passwords";
    if ( $param eq 'hex' ) {
        return Digest::MD5::md5_hex($plain);
    } elsif ( $param eq 'base64' ) {
        return Digest::MD5::md5_base64($plain);
    } elsif ( $param eq 'binary' ) {
        return Digest::MD5::md5($plain);
    }
    die "Unknown MD5 format $param";
}

1;
__END__