[Affelio-cvs 657] CVS update: affelio_farm/admin/skelton/affelio/extlib/Digest/Perl

Back to archive index

Tadashi Okoshi slash****@users*****
2005年 10月 25日 (火) 04:20:49 JST


Index: affelio_farm/admin/skelton/affelio/extlib/Digest/Perl/MD5.pm
diff -u affelio_farm/admin/skelton/affelio/extlib/Digest/Perl/MD5.pm:1.1.1.1 affelio_farm/admin/skelton/affelio/extlib/Digest/Perl/MD5.pm:removed
--- affelio_farm/admin/skelton/affelio/extlib/Digest/Perl/MD5.pm:1.1.1.1	Tue Oct 25 04:14:40 2005
+++ affelio_farm/admin/skelton/affelio/extlib/Digest/Perl/MD5.pm	Tue Oct 25 04:20:49 2005
@@ -1,421 +0,0 @@
-#!/usr/local/bin/perl -w
-#$Id: MD5.pm,v 1.1.1.1 2005/10/24 19:14:40 slash5234 Exp $
-
-package Digest::Perl::MD5;
-use strict;
-use integer;
-use Exporter;
-use vars qw($VERSION @ISA @EXPORTER @EXPORT_OK);
-
- @ EXPORT_OK = qw(md5 md5_hex md5_base64);
-
- @ ISA = 'Exporter';
-$VERSION = '1.5';
-
-# I-Vektor
-sub A() { 0x67_45_23_01 }
-sub B() { 0xef_cd_ab_89 }
-sub C() { 0x98_ba_dc_fe }
-sub D() { 0x10_32_54_76 }
-
-# for internal use
-sub MAX() { 0xFFFFFFFF }
-
-# padd a message to a multiple of 64
-sub padding($) {
-    my $l = length (my $msg = shift() . chr(128));    
-    $msg .= "\0" x (($l%64<=56?56:120)-$l%64);
-    $l = ($l-1)*8;
-    $msg .= pack 'VV', $l & MAX , ($l >> 16 >> 16);
-}
-
-
-sub rotate_left($$) {
-	#$_[0] << $_[1] | $_[0] >> (32 - $_[1]);
-	#my $right = $_[0] >> (32 - $_[1]);
-	#my $rmask = (1 << $_[1]) - 1;
-	($_[0] << $_[1]) | (( $_[0] >> (32 - $_[1])  )  & ((1 << $_[1]) - 1));
-	#$_[0] << $_[1] | (($_[0]>> (32 - $_[1])) & (1 << (32 - $_[1])) - 1);
-}
-
-sub gen_code {
-  # Discard upper 32 bits on 64 bit archs.
-  my $MSK = ((1 << 16) << 16) ? ' & ' . MAX : '';
-#	FF => "X0=rotate_left(((X1&X2)|(~X1&X3))+X0+X4+X6$MSK,X5)+X1$MSK;",
-#	GG => "X0=rotate_left(((X1&X3)|(X2&(~X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-  my %f = (
-	FF => "X0=rotate_left((X3^(X1&(X2^X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-	GG => "X0=rotate_left((X2^(X3&(X1^X2)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-	HH => "X0=rotate_left((X1^X2^X3)+X0+X4+X6$MSK,X5)+X1$MSK;",
-	II => "X0=rotate_left((X2^(X1|(~X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-  );
-  #unless ( (1 << 16) << 16) { %f = %{$CODES{'32bit'}} }
-  #else { %f = %{$CODES{'64bit'}} }
-
-  my %s = (  # shift lengths
-	S11 => 7, S12 => 12, S13 => 17, S14 => 22, S21 => 5, S22 => 9, S23 => 14,
-	S24 => 20, S31 => 4, S32 => 11, S33 => 16, S34 => 23, S41 => 6, S42 => 10,
-	S43 => 15, S44 => 21
-  );
-
-  my $insert = "";
-  while(<DATA>) {
-	chomp;
-	next unless /^[FGHI]/;
-	my ($func, @ x) = split /,/;
-	my $c = $f{$func};
-	$c =~ s/X(\d)/$x[$1]/g;
-	$c =~ s/(S\d{2})/$s{$1}/;
-        $c =~ s/^(.*)=rotate_left\((.*),(.*)\)\+(.*)$//;
-
-	#my $rotate = "(($2 << $3) || (($2 >> (32 - $3)) & (1 << $2) - 1)))"; 
-	$c = "\$r = $2;
-        $1 = ((\$r << $3) | ((\$r >> (32 - $3))  & ((1 << $3) - 1))) + $4";
-	$insert .= "\t$c\n";
-  }
-  
-  my $dump = '
-  sub round {
-	my ($a,$b,$c,$d) = @_[0 .. 3];
-	my $r;
-
-	' . $insert . '
-	$_[0]+$a' . $MSK . ', $_[1]+$b ' . $MSK . 
-        ', $_[2]+$c' . $MSK . ', $_[3]+$d' . $MSK . ';
-  }';
-  eval $dump;
-  #print "$dump\n";
-  #exit 0;
-}
-
-gen_code();
-
-
-# object part of this module
-sub new {
-	my $class = shift;
-	bless {}, ref($class) || $class;
-}
-
-sub reset {
-	my $self = shift;
-	delete $self->{data};
-	$self
-}
-
-sub add(@) {
-	my $self = shift;
-	$self->{data} .= join'', @_;
-	$self
-}
-
-sub addfile {
-  	my ($self,$fh) = @_;
-	if (!ref($fh) && ref(\$fh) ne "GLOB") {
-	    require Symbol;
-	    $fh = Symbol::qualify($fh, scalar caller);
-	}
-	$self->{data} .= do{local$/;<$fh>};
-	$self
-}
-
-sub digest {
-	md5(shift->{data})
-}
-
-sub hexdigest {
-	md5_hex(shift->{data})
-}
-
-sub b64digest {
-	md5_base64(shift->{data})
-}
-
-sub md5(@) {
-	my $message = padding(join'', @ _);
-	my ($a,$b,$c,$d) = (A,B,C,D);
-	my $i;
-	for $i (0 .. (length $message)/64-1) {
-		my @X = unpack 'V16', substr $message,$i*64,64;	
-		($a,$b,$c,$d) = round($a,$b,$c,$d, @ X);
-	}
-	pack 'V4',$a,$b,$c,$d;
-}
-
-
-sub md5_hex(@) {  
-  unpack 'H*', &md5;
-}
-
-sub md5_base64(@) {
-  encode_base64(&md5);
-}
-
-
-sub encode_base64 ($) {
-    my $res;
-    while ($_[0] =~ /(.{1,45})/gs) {
-	$res .= substr pack('u', $1), 1;
-	chop $res;
-    }
-    $res =~ tr|` -_|AA-Za-z0-9+/|;#`
-    chop $res;chop $res;
-    $res;
-}
-
-1;
-
-=head1 NAME
-
-Digest::MD5::Perl - Perl implementation of Ron Rivests MD5 Algorithm
-
-=head1 DISCLAIMER
-
-This is B<not> an interface (like C<Digest::MD5>) but a Perl implementation of MD5.
-It is written in perl only and because of this it is slow but it works without C-Code.
-You should use C<Digest::MD5> instead of this module if it is available.
-This module is only usefull for
-
-=over 4
-
-=item
-
-computers where you cannot install C<Digest::MD5> (e.g. lack of a C-Compiler)
-
-=item
-
-encrypting only small amounts of data (less than one million bytes). I use it to
-hash passwords.
-
-=item
-
-educational purposes
-
-=back
-
-=head1 SYNOPSIS
-
- # Functional style
- use Digest::MD5  qw(md5 md5_hex md5_base64);
-
- $hash = md5 $data;
- $hash = md5_hex $data;
- $hash = md5_base64 $data;
-    
-
- # OO style
- use Digest::MD5;
-
- $ctx = Digest::MD5->new;
-
- $ctx->add($data);
- $ctx->addfile(*FILE);
-
- $digest = $ctx->digest;
- $digest = $ctx->hexdigest;
- $digest = $ctx->b64digest;
-
-=head1 DESCRIPTION
-
-This modules has the same interface as the much faster C<Digest::MD5>. So you can
-easily exchange them, e.g.
-
-	BEGIN {
-	  eval {
-	    require Digest::MD5;
-	    import Digest::MD5 'md5_hex'
-	  };
-	  if ($@) { # ups, no Digest::MD5
-	    require Digest::Perl::MD5;
-	    import Digest::Perl::MD5 'md5_hex'
-	  }		
-	}
-
-If the C<Digest::MD5> module is available it is used and if not you take
-C<Digest::Perl::MD5>.
-
-You can also install the Perl part of Digest::MD5 together with Digest::Perl::MD5
-and use Digest::MD5 as normal, it falls back to Digest::Perl::MD5 if it
-cannot load its object files.
-
-For a detailed Documentation see the C<Digest::MD5> module.
-
-=head1 EXAMPLES
-
-The simplest way to use this library is to import the md5_hex()
-function (or one of its cousins):
-
-    use Digest::Perl::MD5 'md5_hex';
-    print 'Digest is ', md5_hex('foobarbaz'), "\n";
-
-The above example would print out the message
-
-    Digest is 6df23dc03f9b54cc38a0fc1483df6e21
-
-provided that the implementation is working correctly.  The same
-checksum can also be calculated in OO style:
-
-    use Digest::MD5;
-    
-    $md5 = Digest::MD5->new;
-    $md5->add('foo', 'bar');
-    $md5->add('baz');
-    $digest = $md5->hexdigest;
-    
-    print "Digest is $digest\n";
-
-=head1 LIMITATIONS
-
-This implementation of the MD5 algorithm has some limitations:
-
-=over 4
-
-=item
-
-It's slow, very slow. I've done my very best but Digest::MD5 is still about 135 times faster.
-You can only encrypt Data up to one million bytes in an acceptable time. But it's very usefull
-for encrypting small amounts of data like passwords.
-
-=item
-
-You can only encrypt up to 2^32 bits = 512 MB on 32bit archs. You should use C<Digest::MD5>
-for those amounts of data.
-
-=item
-
-C<Digest::Perl::MD5> loads all data to encrypt into memory. This is a todo.
-
-=back
-
-=head1 SEE ALSO
-
-L<Digest::MD5>
-
-L<md5sum(1)>
-
-RFC 1321
-
-=head1 COPYRIGHT
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
- Copyright 2000 Christian Lackas, Imperia Software Solutions
- Copyright 1998-1999 Gisle Aas.
- Copyright 1995-1996 Neil Winton.
- Copyright 1991-1992 RSA Data Security, Inc.
-
-The MD5 algorithm is defined in RFC 1321. The basic C code
-implementing the algorithm is derived from that in the RFC and is
-covered by the following copyright:
-
-=over 4
-
-=item
-
-Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
-
-=back
-
-This copyright does not prohibit distribution of any version of Perl
-containing this extension under the terms of the GNU or Artistic
-licenses.
-
-=head1 AUTHORS
-
-The original MD5 interface was written by Neil Winton
-(C<N.Win****@axion*****>).
-
-C<Digest::MD5> was made by Gisle Aas <gisle****@aas*****> (I took his Interface
-and part of the documentation)
-
-Thanks to Guido Flohr for his 'use integer'-hint.
-
-This release was made by Christian Lackas <delta****@clack*****>.
-
-=cut
-
-__DATA__
-FF,$a,$b,$c,$d,$_[4],7,0xd76aa478,/* 1 */
-FF,$d,$a,$b,$c,$_[5],12,0xe8c7b756,/* 2 */
-FF,$c,$d,$a,$b,$_[6],17,0x242070db,/* 3 */
-FF,$b,$c,$d,$a,$_[7],22,0xc1bdceee,/* 4 */
-FF,$a,$b,$c,$d,$_[8],7,0xf57c0faf,/* 5 */
-FF,$d,$a,$b,$c,$_[9],12,0x4787c62a,/* 6 */
-FF,$c,$d,$a,$b,$_[10],17,0xa8304613,/* 7 */
-FF,$b,$c,$d,$a,$_[11],22,0xfd469501,/* 8 */
-FF,$a,$b,$c,$d,$_[12],7,0x698098d8,/* 9 */
-FF,$d,$a,$b,$c,$_[13],12,0x8b44f7af,/* 10 */
-FF,$c,$d,$a,$b,$_[14],17,0xffff5bb1,/* 11 */
-FF,$b,$c,$d,$a,$_[15],22,0x895cd7be,/* 12 */
-FF,$a,$b,$c,$d,$_[16],7,0x6b901122,/* 13 */
-FF,$d,$a,$b,$c,$_[17],12,0xfd987193,/* 14 */
-FF,$c,$d,$a,$b,$_[18],17,0xa679438e,/* 15 */
-FF,$b,$c,$d,$a,$_[19],22,0x49b40821,/* 16 */ 
-GG,$a,$b,$c,$d,$_[5],5,0xf61e2562,/* 17 */
-GG,$d,$a,$b,$c,$_[10],9,0xc040b340,/* 18 */
-GG,$c,$d,$a,$b,$_[15],14,0x265e5a51,/* 19 */
-GG,$b,$c,$d,$a,$_[4],20,0xe9b6c7aa,/* 20 */
-GG,$a,$b,$c,$d,$_[9],5,0xd62f105d,/* 21 */
-GG,$d,$a,$b,$c,$_[14],9,0x2441453,/* 22 */
-GG,$c,$d,$a,$b,$_[19],14,0xd8a1e681,/* 23 */
-GG,$b,$c,$d,$a,$_[8],20,0xe7d3fbc8,/* 24 */
-GG,$a,$b,$c,$d,$_[13],5,0x21e1cde6,/* 25 */
-GG,$d,$a,$b,$c,$_[18],9,0xc33707d6,/* 26 */
-GG,$c,$d,$a,$b,$_[7],14,0xf4d50d87,/* 27 */
-GG,$b,$c,$d,$a,$_[12],20,0x455a14ed,/* 28 */
-GG,$a,$b,$c,$d,$_[17],5,0xa9e3e905,/* 29 */
-GG,$d,$a,$b,$c,$_[6],9,0xfcefa3f8,/* 30 */
-GG,$c,$d,$a,$b,$_[11],14,0x676f02d9,/* 31 */
-GG,$b,$c,$d,$a,$_[16],20,0x8d2a4c8a,/* 32 */
-HH,$a,$b,$c,$d,$_[9],4,0xfffa3942,/* 33 */
-HH,$d,$a,$b,$c,$_[12],11,0x8771f681,/* 34 */
-HH,$c,$d,$a,$b,$_[15],16,0x6d9d6122,/* 35 */
-HH,$b,$c,$d,$a,$_[18],23,0xfde5380c,/* 36 */
-HH,$a,$b,$c,$d,$_[5],4,0xa4beea44,/* 37 */
-HH,$d,$a,$b,$c,$_[8],11,0x4bdecfa9,/* 38 */
-HH,$c,$d,$a,$b,$_[11],16,0xf6bb4b60,/* 39 */
-HH,$b,$c,$d,$a,$_[14],23,0xbebfbc70,/* 40 */
-HH,$a,$b,$c,$d,$_[17],4,0x289b7ec6,/* 41 */
-HH,$d,$a,$b,$c,$_[4],11,0xeaa127fa,/* 42 */
-HH,$c,$d,$a,$b,$_[7],16,0xd4ef3085,/* 43 */
-HH,$b,$c,$d,$a,$_[10],23,0x4881d05,/* 44 */
-HH,$a,$b,$c,$d,$_[13],4,0xd9d4d039,/* 45 */
-HH,$d,$a,$b,$c,$_[16],11,0xe6db99e5,/* 46 */
-HH,$c,$d,$a,$b,$_[19],16,0x1fa27cf8,/* 47 */
-HH,$b,$c,$d,$a,$_[6],23,0xc4ac5665,/* 48 */
-II,$a,$b,$c,$d,$_[4],6,0xf4292244,/* 49 */
-II,$d,$a,$b,$c,$_[11],10,0x432aff97,/* 50 */
-II,$c,$d,$a,$b,$_[18],15,0xab9423a7,/* 51 */
-II,$b,$c,$d,$a,$_[9],21,0xfc93a039,/* 52 */
-II,$a,$b,$c,$d,$_[16],6,0x655b59c3,/* 53 */
-II,$d,$a,$b,$c,$_[7],10,0x8f0ccc92,/* 54 */
-II,$c,$d,$a,$b,$_[14],15,0xffeff47d,/* 55 */
-II,$b,$c,$d,$a,$_[5],21,0x85845dd1,/* 56 */
-II,$a,$b,$c,$d,$_[12],6,0x6fa87e4f,/* 57 */
-II,$d,$a,$b,$c,$_[19],10,0xfe2ce6e0,/* 58 */
-II,$c,$d,$a,$b,$_[10],15,0xa3014314,/* 59 */
-II,$b,$c,$d,$a,$_[17],21,0x4e0811a1,/* 60 */
-II,$a,$b,$c,$d,$_[8],6,0xf7537e82,/* 61 */
-II,$d,$a,$b,$c,$_[15],10,0xbd3af235,/* 62 */
-II,$c,$d,$a,$b,$_[6],15,0x2ad7d2bb,/* 63 */
-II,$b,$c,$d,$a,$_[13],21,0xeb86d391,/* 64 */


Affelio-cvs メーリングリストの案内
Back to archive index