Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
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 (Bishop) 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 about the Monastery: (7)
As of 2015-07-03 00:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (47 votes), past polls