.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "RC4 3pm" .TH RC4 3pm "2018-02-17" "perl v5.26.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Crypt::RC4 \- Perl implementation of the RC4 encryption algorithm .SH "SYNOPSIS" .IX Header "SYNOPSIS" # Functional Style use Crypt::RC4; \f(CW$encrypted\fR = \s-1RC4\s0( \f(CW$passphrase\fR, \f(CW$plaintext\fR ); \f(CW$decrypt\fR = \s-1RC4\s0( \f(CW$passphrase\fR, \f(CW$encrypted\fR ); .PP # \s-1OO\s0 Style use Crypt::RC4; \f(CW$ref\fR = Crypt::RC4\->new( \f(CW$passphrase\fR ); \f(CW$encrypted\fR = \f(CW$ref\fR\->\s-1RC4\s0( \f(CW$plaintext\fR ); .PP .Vb 2 \& $ref2 = Crypt::RC4\->new( $passphrase ); \& $decrypted = $ref2\->RC4( $encrypted ); .Ve .PP # process an entire file, one line at a time # (Warning: Encrypted file leaks line lengths.) \f(CW$ref3\fR = Crypt::RC4\->new( \f(CW$passphrase\fR ); while (<\s-1FILE\s0>) { chomp; print \f(CW$ref3\fR\->\s-1RC4\s0($_), \*(L"\en\*(R"; } .SH "DESCRIPTION" .IX Header "DESCRIPTION" A simple implementation of the \s-1RC4\s0 algorithm, developed by \s-1RSA\s0 Security, Inc. Here is the description from \s-1RSA\s0's website: .PP \&\s-1RC4\s0 is a stream cipher designed by Rivest for \s-1RSA\s0 Data Security (now \s-1RSA\s0 Security). It is a variable key-size stream cipher with byte-oriented operations. The algorithm is based on the use of a random permutation. Analysis shows that the period of the cipher is overwhelmingly likely to be greater than 10100. Eight to sixteen machine operations are required per output byte, and the cipher can be expected to run very quickly in software. Independent analysts have scrutinized the algorithm and it is considered secure. .PP Based substantially on the \*(L"\s-1RC4\s0 in 3 lines of perl\*(R" found at http://www.cypherspace.org .PP A major bug in v1.0 was fixed by David Hook (dgh@wumpus.com.au). Thanks, David. .SH "AUTHOR" .IX Header "AUTHOR" Kurt Kincaid (sifukurt@yahoo.com) Ronald Rivest for \s-1RSA\s0 Security, Inc. .SH "BUGS" .IX Header "BUGS" Disclaimer: Strictly speaking, this module uses the \*(L"alleged\*(R" \s-1RC4\s0 algorithm. The Algorithm known as \*(L"\s-1RC4\*(R"\s0 is a trademark of \s-1RSA\s0 Security Inc., and this document makes no claims one way or another that this is the correct algorithm, and further, make no claims about the quality of the source code nor any licensing requirements for commercial use. .PP There's nothing preventing you from using this module in an insecure way which leaks information. For example, encrypting multilple messages with the same passphrase may allow an attacker to decode all of them with little effort, even though they'll appear to be secured. If serious crypto is your goal, be careful. Be very careful. .PP It's a pure-Perl implementation, so that rating of \*(L"Eight to sixteen machine operations\*(R" is good for nothing but a good laugh. If encryption and decryption are a bottleneck for you, please re-write this module to use native code wherever practical. .SH "LICENSE" .IX Header "LICENSE" This is free software and may be modified and/or redistributed under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" perl, , , ,