Cross Reference: base.t
xref
: /
osnet-11
/
usr
/
src
/
cmd
/
perl
/
5.8.4
/
distrib
/
lib
/
Digest
/
t
/
base.t
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
base.t revision 1
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
#!perl -w
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
use
Test
qw
(
plan
ok
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
plan
tests
=>
12
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
package
LenDigest
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
require
Digest
::
base
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
use
vars
qw
(@
ISA
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
@
ISA
=
qw
(
Digest
::
base
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
sub
new
{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$class
=
shift
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$str
=
""
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
bless
\$
str
,
$class
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
sub
add
{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$self
=
shift
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$
$self
.=
join
(
""
, @_)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
return
$self
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
}
e77b06d21580f630e0a7c437495ab283d3672828
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
sub
digest
{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$self
=
shift
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$len
=
length
($
$self
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$first
=
(
$len
>
0
)
?
substr
($
$self
,
0
,
1
)
:
"X"
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$
$self
=
""
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
return
sprintf
"
$first
%04d"
,
$len
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
my
$ctx
=
LenDigest
->
new
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
digest
,
"X0000"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
hexdigest
,
"5830303030"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
b64digest
,
"WDAwMDA"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add
(
"foo"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
digest
,
"f0003"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add
(
"foo"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
hexdigest
,
"6630303033"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add
(
"foo"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
b64digest
,
"ZjAwMDM"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
open
(F,
">xxtest$$"
)
||
die
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
binmode
(F)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
print
F
"abc"
x
100
,
"\n"
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
close
(F)
||
die
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
open
(F,
"xxtest$$"
)
||
die
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
addfile
(*F)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
close
(F)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
unlink
(
"xxtest$$"
)
||
warn
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
digest
,
"a0301"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
eval
{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add_bits
(
"1010"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
}
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
($@ =~ /^
Number
of
bits
must
be
multiple
of
8
/)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add_bits
(
"01010101"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
digest
,
"U0001"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
eval
{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add_bits
(
"abc"
,
12
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
}
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
($@ =~ /^
Number
of
bits
must
be
multiple
of
8
/)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add_bits
(
"abc"
,
16
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
digest
,
"a0002"
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
$ctx
->
add_bits
(
"abc"
,
32
)
;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1d
tomee
ok
(
$ctx
->
digest
,
"a0003"
)
;
127bbe13a6d36580af6a8ded154f1201a6250772
tomee