Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Simple Crypt::CBC Sample?

by boat73 (Scribe)
on Feb 14, 2013 at 19:54 UTC ( #1018776=perlquestion: print w/ replies, xml ) Need Help??
boat73 has asked for the wisdom of the Perl Monks concerning the following question:

I have read docs and must be having a bad day. I have done some PGP encryption so maybe my understanding of the keys is mixing me up. I am just trying to get a snippet working using Crypt::CBC. What am I doing wroong, I am getting the error below. Any help is appreciated! Couldn't load Crypt::2238215281: Can't locate Crypt/2238215281.pm
use Crypt::CBC; use Crypt::Random qw( makerandom ); $key = makerandom( Size => 32, Strength => 1); my $cipher = Crypt::CBC->new( -key => $key ); my $ciphertext = $cipher->encrypt_hex('test');

Comment on Simple Crypt::CBC Sample?
Download Code
Re: Simple Crypt::CBC Sample?
by toolic (Chancellor) on Feb 14, 2013 at 20:14 UTC
    I was unable to install Crypt::Random, so I can't even attempt to replicate your error.

    However, if I run a modified version of your code with only Crypt::CBC, it runs for me without errors:

    use warnings; use strict; use Crypt::CBC; my $key = 1; my $cipher = Crypt::CBC->new( -key => $key ); my $ciphertext = $cipher->encrypt_hex('test'); print "$ciphertext \n"; __END__ 53616c7465645f5f5847db7edbe4cfb66a7ce84481016e42

    Perhaps there is a strange interaction between the 2 modules. Can you use something else to generate the key?

      Interesting, your code generates the error as well. At least I know I am not crazy, just need to figure out where the error is coming from. I am running perl 5.14.2.1402 on Windowz, are you running on Unix? Couldn't load Crypt::1: Can't locate Crypt/1.pm in @INC
        Yes, I'm on Unix, 2 variants:
        This is perl 5, version 12, subversion 2 (v5.12.2) built for x86_64-li +nux This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-li +nux-thread-multi
        A look at the source code shows it may be doing a require:
        unless (ref $cipher) { # munge the class name if no object passed $cipher = $cipher=~/^Crypt::/ ? $cipher : "Crypt::$cipher"; $cipher->can('encrypt') or eval "require $cipher; 1" or croak "C +ouldn't load $cipher: $@"; # some crypt modules use the class Crypt::, and others don't $cipher =~ s/^Crypt::// unless $cipher->can('keysize'); }
Re: Simple Crypt::CBC Sample?
by naChoZ (Curate) on Feb 14, 2013 at 22:24 UTC

    Instead of letting Crypt::CBC try and figure out a cipher on its own (where it's clearly picking 'Random' as the cipher you want to use in this case), you can specify one yourself...

    my $cipher = Crypt::CBC->new( -key => $key, cipher => 'Rijndael' );

    That will cause it to use Crypt::Rijndael for the cipher.

    --
    Andy

Re: Simple Crypt::CBC Sample?
by Anonymous Monk on Feb 15, 2013 at 17:12 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1018776]
Approved by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (7)
As of 2014-12-21 08:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (104 votes), past polls