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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#! /usr/local/bin/perl -w
#
# Copyright (C) 1995, 1996 Systemics Ltd (http://www.systemics.com/)
# All rights reserved.
#
package Crypt::IDEA;
require Exporter;
require DynaLoader;
@ISA = (Exporter, DynaLoader);
# Items to export into callers namespace by default
@EXPORT = qw();
# Other items we are prepared to export if requested
@EXPORT_OK = qw();
bootstrap Crypt::IDEA;
package IDEA;
$VERSION="1.08";
use strict;
use Carp;
sub usage
{
my ($mess, $package, $filename, $line, $subr);
($mess) = @_;
($package, $filename, $line, $subr) = caller(1);
$Carp::CarpLevel = 2;
croak "Usage: $package\::$subr - $mess";
}
sub blocksize { 8; }
sub keysize { 16; }
sub new
{
usage("new IDEA key") unless @_ == 2;
my $type = shift; my $self = {}; bless $self, $type;
$self->{'ks'} = Crypt::IDEA::expand_key(shift);
$self;
}
sub encrypt
{
usage("encrypt data[8 bytes]") unless @_ == 2;
my $self = shift;
my $data = shift;
Crypt::IDEA::crypt($data, $data, $self->{'ks'});
$data;
}
sub decrypt
{
usage("decrypt data[8 bytes]") unless @_ == 2;
my $self = shift;
my $data = shift;
#
# Cache Decrypt key schedule
#
$self->{'dks'} = Crypt::IDEA::invert_key($self->{'ks'})
unless exists $self->{'dks'};
Crypt::IDEA::crypt($data, $data, $self->{'dks'});
$data;
}
1;
|