2018-03-22 15:51:09 +01:00
|
|
|
package Crypt::Stream::RC4;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
2018-03-22 15:54:03 +01:00
|
|
|
our $VERSION = '0.058_002';
|
2018-03-22 15:51:09 +01:00
|
|
|
|
|
|
|
use CryptX;
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
=pod
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
|
|
|
Crypt::Stream::RC4 - Stream cipher RC4
|
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
|
|
|
use Crypt::Stream::RC4;
|
|
|
|
|
|
|
|
# encrypt
|
|
|
|
$key = "1234567890123456";
|
|
|
|
$stream = Crypt::Stream::RC4->new($key);
|
|
|
|
$ct = $stream->crypt("plain message");
|
|
|
|
|
|
|
|
# decrypt
|
|
|
|
$key = "1234567890123456";
|
|
|
|
$stream = Crypt::Stream::RC4->new($key);
|
|
|
|
$pt = $stream->crypt($ct);
|
|
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
|
|
|
Provides an interface to the RC4 stream cipher.
|
|
|
|
|
|
|
|
=head1 METHODS
|
|
|
|
|
|
|
|
=head2 new
|
|
|
|
|
|
|
|
$stream = Crypt::Stream::RC4->new($key);
|
|
|
|
# $key .. length 5-256 bytes (40 - 2048 bits)
|
|
|
|
|
|
|
|
=head2 crypt
|
|
|
|
|
|
|
|
$ciphertext = $stream->crypt($plaintext);
|
|
|
|
#or
|
|
|
|
$plaintext = $stream->crypt($ciphertext);
|
|
|
|
|
|
|
|
=head2 keystream
|
|
|
|
|
|
|
|
$random_key = $stream->keystream($length);
|
|
|
|
|
|
|
|
=head2 clone
|
|
|
|
|
|
|
|
$stream->clone();
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
|
|
|
=over
|
|
|
|
|
2018-03-22 15:54:03 +01:00
|
|
|
=item * L<Crypt::Stream::ChaCha>, L<Crypt::Stream::Sober128>, L<Crypt::Stream::Salsa20>, L<Crypt::Stream::Sosemanuk>
|
2018-03-22 15:51:09 +01:00
|
|
|
|
|
|
|
=item * L<https://en.wikipedia.org/wiki/RC4_cipher|https://en.wikipedia.org/wiki/RC4_cipher>
|
|
|
|
|
|
|
|
=back
|
|
|
|
|
|
|
|
=cut
|