Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

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/
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');

Replies are listed 'Best First'.
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 on Windowz, are you running on Unix? Couldn't load Crypt::1: Can't locate Crypt/ in @INC
        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'); }
        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
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.


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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1018776]
Approved by toolic
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2018-06-21 03:10 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (117 votes). Check out past polls.